单例模式
1、定义:单例模式指的是一个类只能有一个实例,这样的类被称为单例类,或者单态类,即Singleton Class
2、特点:单例类只可有一个实例 ;它必须自己创立这唯一的一个实例 ;它必须给所有其它的类提供自己这一实例 。
3、单例模式有两种常见的实现方式,被称为饿汉式与懒汉式
饿汉式:加载类的时候就初始化一个实例。
懒汉式:加载类的时候不初始化,当第一次使用实例时才初始化。
4、步骤:
1、构造方法是private权限,保证其他类无法创建该类实例,只能该类自身创建
2、声明一个static修饰的自身实例,保证该实例永远只是一个
3、提供一个public方法,返回定义的static自身实例
懒汉式
public class SingletonClass {
//单例类只可有一个实例
static SingletonClass instance = null;
// 只有自己能调用,其它类无法调用
private SingletonClass() {
}
//它必须给所有其它的类提供自己这一实例
public static SingletonClass getInstance() {
if (instance==null) {
instance = new SingletonClass();
}
return instance;
}
饿汉式
public class SingletonClass {
//单例类只可有一个实例
static SingletonClass instance = new SingletonClass();
// 只有自己能调用,其它类无法调用
private SingletonClass() {
}
//它必须给所有其它的类提供自己这一实例
public static SingletonClass getInstance() {
return instance;
}
}
工厂模式
1、编写一个工厂方法根据配置文件返回对应的对象。
public static Object getInstance() throws Exception{ //读取配置文件 BufferedReader buf = new BufferedReader(new FileReader(new File("info.txt"))); //读取第一行,读取类的信息 String className = buf.readLine(); //获取Class类的实例 Class clazz = Class.forName(className); //获取对应的构造方法 Constructor constructor = clazz.getDeclaredConstructor(null); constructor.setAccessible(true); Object o = constructor.newInstance(null); String line = null; while((line = buf.readLine())!=null){ String[] datas = line.split("="); //读出的配置信息,用split分割成一个数组,0是属性名 1是属性值 Field field = clazz.getDeclaredField(datas[0]); //可以访问 field.setAccessible(true); if (field.getType()==int.class) { field.set(o, Integer.parseInt(datas[1])); }else{ field.set(o, datas[1]); } } return o; }
本文深入解析了单例模式和工厂模式两种经典的设计模式。单例模式确保类只有一个实例,并提供了全局访问点。工厂模式则通过创建对象而不暴露创建逻辑来封装对象的创建过程。文中详细解释了饿汉式和懒汉式单例模式的区别,以及如何通过工厂方法根据配置文件创建对象。
工厂模式)&spm=1001.2101.3001.5002&articleId=84501905&d=1&t=3&u=e5c7409b1c894cb6a66344e53502b27c)
1170

被折叠的 条评论
为什么被折叠?



