/*
* 设计模式:对问题行之有效的解决方式,其实它是一种思想.
* 1.单例设计模式:
* 解决的问题:就是可以保证一个类在内存中的对象的唯一性.
*
* 必须对多个程序使用同一个配置信息对象时,就需要保证该对象的唯一性.
* 如何保证对象的唯一性:
* 1.不允许其他程序用new创建该类对象.
* 2.在该类创建一个本类实例.
* 3.对外提供一个方法让其他程序可以获得该对象.
*
* 步骤:
* 1.私有化该类构造函数.
* 2.通过new在本类中创建一个本类对象.
* 3.定义一个公有的方法,将创建的对象返回.
*/
public class SingleDemo {
public static void main(String[] args) {
// Single s1 = Single.getInstance() ;
// Single s2 = Single.getInstance() ;
// System.out.println(s1==s2);
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 Single { //类一旦加载,对象就已经存在了.
private static Single s = new Single() ;
//通过new在本类中创建一个本类对象.
private Single() { //私有化该类构造函数
}
public static Single getInstance() {
//定义一个公有的方法,将创建的对象返回.
return s;
}
}
//懒汉式
class Single_2 { //类加载的时候,没有对象,只有调用了getInstance方法时,才会创建对象.
//延迟加载形式.
private static Single_2 s = null ;
private Single_2() {
}
public static Single_2 getInstance() {
if(s==null) {
s = new Single_2() ;
}
return s;
}
}
class Test {
private int num ;
private static Test t = new Test() ;
private Test() {}
public static Test getInstance() {
return t ;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
}