java的单例设计模式是java23种设计模式的一种; 比如:必须对于多个程序使用同一个配置信息对象时,就需要保证该对象的唯一性。
如何保证对象的唯一性呢? 1,不允许其他的程序使用new关键字创建一个本类对象。 2,在该类中创建一个本类实例。 3,对外提供一个共有的方法,让其他的程序可以获取该类对象。
步骤: 1:私有化该类的构造函数。 2,通过new关键字在本类中创建一个本类对象。 3,定义一个公有的方法,将创建的对象返回。
//饿汉式:单例设计模式 class Single//类一加载,对象就已经存在了。 { private **static** Single s = new Single();//成员变量一般会私有化 private Single(){} //私有化构造函数,不允许其他程序用new创建该类对象 public **static** Single getInstance()//这样可控可以加if //定义一个公有方法,将创建的本类对象返回 { return s; } } //懒汉式:延迟加载设计模式 class Single2//类加载进来,没有对象,只有调用了getInstance方法时,才会创建对象。 //延迟加载形式。 { private static Single2 s = null; private Single2(){} public *static* Single2 getInstance() { if(s==null) s = new Single2(); return s; } } class SingleDemo { public static void main(String[] args) { Single s1 = Single.getInstance(); Single ss=Single.s; (同样可以获取s这个对象) //不能创建这个对象,还需要获取这个对象; //此方法调用有1:对象的调用;2:类名的调用(前提,静态) Single s2 = Single.getInstance(); System.out.println(s1==s2); // Single ss = Single.s; // Test t1 = new Test(); // Test t2 = new Test(); Test t1 = Test.getInstance(); Test t2 = Test.getInstance(); t1.setNum(10); t2.setNum(20); System.out.println(t1.getNum());//20 System.out.println(t2.getNum());//20 } } 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; } }