------- android培训、java培训、期待与您交流! ----------
1 单例设计模式的作用
解决一个类在内存中只能存在一个对象的问题,这样的话任何对 对象的操作都是在操作同一个对象
如何保证对象的唯一?
1 为了避免其他程序过多的建立该类对象,应该先禁止其他程序建立该类的对象
2 为了让其他的程序可以访问到该类的对象,应该在本类中创建一个本类的对象
3 为了方便外部使用这个对象,应该提供一个方法返回本类对象
对应的解决方案:
1 将构造函数私有化,防止外部创建对象
2 在本类中创建本类对象
3 提供一个方法,可以获取本类的对象
例如:
class Single{
private Single(){};//构造函数私有化
private static Single s = new Single();//创建本类对象
public static Single getSingle(){
return s;//返回本类对象的引用
}
}
这种创建方法,也叫“饿汉式“,类一加载就创建对象,也是在开发中比较常用的,
另一种就是”懒汉式“,当在调用这个类的获取方法时才创建对象
例如:
class Single2{
private Single2(){};
private static Single2 s = null;
public static Single2 getSingle2(){
if(s == null){
synchronized(Single.class){
if(s==null)
s = new Single2();
}
}
return s;
}
}
这种方式在使用时才创建对象,节省内存,但是在代码的操作上比较费时,也不简化,而且在多线程的操作中有可能存在安全问题(用上面代码中的方式来解决安全问题),所以在开发中都是应用饿汉式来创建单例类。