设计模式:对问题行之有效的解决方式
单例设计模式:
解决问题:保证一个类在内存中的对象唯一性
必须对于多个程序使用同一个配置信息对象时,就需要保证该对象的唯一性。
如何保证对象的唯一性:
1)不允许其他程序用new创建该类对象
2)在该类创建一个本类实例
3)对外提供一个方法让其他程序可以获取该对象
三个步骤:
1)私有化该类的构造函数
2)通过new在本类中创建一个本类对象
3)定义一个公有的方法,将创建的对象返回重点内容
class Single{
private int num;
public void setNum(int num){
this.num=num;
}
public int getNum(){
return num;
}
//步骤2
private static Single s=new Single();//私有化s,是为了不让其他程序通过Singe.s直接拿到对象,而是需要通过Singe.getInstance()去拿
//步骤1
private Single(){}
//步骤3
public static Single getInstance(){
return s;
}
}
public class SingleDemo{
public static void main(String[] args){
Single s1=Single.getInstance();
Single s2=Single.getInstance();
System.out.println(s1==s2);
s1.setNum(10);
s2.setNum(20);
System.out.println(s1.getNum());
System.out.println(s2.getNum());
}
}
上面的形式为单例模式中的“饿汉式”,下面看单例模式中的“懒汉式”:
class Single{
private static Single s=null;
private Single(){}
public static Single getInstance(){
if(s==null){
return new Single();
}
return s;
}
}
两者的基本区别是,饿汉式在类一加载的时候,对象就已经存在了,而懒汉式,类加载进来时,没有对象,只有调用了getInstance方法时,才会 创建对象。在面试的时候,懒汉式问的比较多,而开发中,饿汉式用的比较多。