单例设计模式
解决的问题:就是可以保证一个类在内存中的对象唯一性。
必须对于多个程序使用同一配置信息对象时,就需要保证对象的唯一性。
如何保证对象唯一性呢?
1、不允许new出来对象。
2、在本类构造方法里new出来。
3、对外提供一个方法让其他程序可以获取对象。
步骤:
1、私有化该类构造函数
2、通过new在本类中创建一个本类对象
3、定义一个共有的方法,将创建的对象返回
class Single {
// 私有化是为了可控
private static Single s = new Single();
private Single() {
}
public static Single getInstance() {
return s;
}
}
class Danli_test {
public static void main(String[] args) {
Single s1 = Single.getInstance();
Single s2 = Single.getInstance();
System.out.println(s1 == s2);// 结果是true
// Single sss=Single.s; 不可控
Test t1 = Test.getInstance();
Test t2 = Test.getInstance();
t1.setNum(10);
t2.setNum(20);
System.out.println(t1.getNum());
System.out.println(t2.getNum());
}
}
// 简单的实例模型
class Test {
private int num;
// 下面三句就可以保证对象的唯一性
private static Test t = new Test();
private Test() {
}
public static Test getInstance() {
return t;
}
public void setNum(int num) {
this.num = num;
}
public int getNum() {
return num;
}
}