作为一名JAVA小白,最近了解到了一下JAVA设计模式之单例设计模式,分享一下。。
首先我们要知道什么是单例设计模式和单例模式能解决的问题。。。
单例设计模式
解决的问题:保证一个类在内存中对象的唯一性。
单例设计模式
解决的问题:保证一个类在内存中对象的唯一性。
例如:多个程序读取一个配置文件时,建议将配置文件封装成对象,这样会方便操作其中数据。但是,又要保证多个程序读到的是同一个配置文件对象,这就需要该配置文件对象在内存中是唯一的了。
如何保证对象的唯一性呢?
1.首先我们想保证对象的唯一性 ,可以先私有构造函数,不允许其他人创建新对象。
2.然后可以在本类中自己创建一个对象,然后提供一个方法用来传输这个对象,给予需要用到的地方使用。(这个方法必须用static修饰,因为本类已经私有了构造函数,想要调用此类的对象,只能用类名 . 来调用)。
单例模式之懒汉式:
public class Single {
private Single() { }
private static Single single;
public static Single getSingle(){
if(single==null) {
single=new Single();
}
return single;
}
}
单例模式之饿汉式
public class Single {
private Single() {
}
private static Single single =new Single();
public static Single getSingle(){
return single;
}
}
懒汉式:特点:Single类一进入内存,就已经创建好了对象,空间换时间
好处:线程安全.
缺点:效率比较低,因为一开始就要加载类new一个对象。
饿汉式:特点:对象是方法被调用时才初始化,也称对象的延迟加载模式,空间换时间。
优点:资源利用率高,不执行方法就不会被实例,可以执行该类的其他静态方法
缺点:有多个线程访问时会不安全,返回的会是不同对象。
总结
实际开发中因为多线程的问题,懒汉式会有问题,所以用的最多的会是饿汉式,
饿汉式能够节省时间,所以使用单例时,最好使用饿汉式。