1.概述
代表了最佳的实现方式,是一些有经验的开发人员,通过开发总结出来的一些经验和错误,用来解决一些问题.世上本没有路,走的人多了便有了路
2.单例模式
为了节约内存,让一个类只能被实例化一次
第一步:构造方法私有化
第二步:需要自己创建一个对象,并且对外提供一个公共静态方法来获取这个对象
第三步:创建一个静态变量,用来存储当前类的对象
根据对象的创建时机不同,分为两种
1.类加载时就创建对象的叫做饿汉模式
2.在第一次使用的时候创建对象叫做懒汉模式
2.1饿汉模式
public class SingleObject {
//创建 SingleObject 的一个对象
private static SingleObject instance = new SingleObject();
//让构造函数为 private,这样该类就不会被实例化
private SingleObject(){}
//获取唯一可用的对象
public static SingleObject getInstance(){
return instance;
}
}
2.2懒汉模式
这种方式是最基本的实现方式,这种实现最大的问题就是不支持多线程。因为没有加锁 synchronized,所以严格意义上它并不算单例模式。
这种方式 lazy loading 很明显,不要求线程安全,在多线程不能正常工作。
public class Singleton {
private static Singleton instance;
private Singleton (){}
public static Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
3.工厂模式
定义一个用于创建产品的接口,由子类决定生产什么
把创建对象的语句封装成一个工厂,这样的话 ,所有用到这个对象的地方,统统都去工厂中获取,把类之
间的强依赖关系变弱,灵活度更高
优点:解耦
封装成一个工厂,这样的话 ,所有用到这个对象的地方,统统都去工厂中获取,把类之
间的强依赖关系变弱,灵活度更高
优点:解耦