- /*
- 设计模式:解决某一类问题最行之有效的方法。
- java中23种设计模式
- 单例设计模式:解决一个类在内存中只存在一个对象。
- */
- /*
- 1,为了避免其他程序过多简历该类对象,先禁止其他程序建立该对象。
- 2,还为了让其他程序可以访问到该类对象,只好在本类中自定义一个对象。
- 3,为了方便其他程序对自定义对象的访问,可以对外提供一些访问方式。
- 代码体现:
- 1,将构造函数私有化。
- 2,在类中创建一个本类对象。
- 3,提供方法可以获取到该对象。
- */
- class Single_1 //饿汉式
- {
- private int num;
-
- public void setNum(int num)
- {
- this.num = num;
- }
- public int getNum()
- {
- return this.num;
- }
- private Single_1(){}
- private static Single_1 s = new Single_1();
- public static Single_1 getInstance()
- {
- return s;
- }
- }
- class Single_2 //懒汉式
- {
- private int num;
-
- public void setNum(int num)
- {
- this.num = num;
- }
- public int getNum()
- {
- return this.num;
- }
- private Single_2(){}
- private static Single_2 s = null;
- public static Single_2 getInstance()
- {
- if(s == null)
- {
- synchronized(Single_2.class)
- {
- if(s == null)
- s = new Single_2();
- }
- }
- return s;
- }
- }
- class SingleDemo
- {
- public static void main(String[] arg)
- {
- Single_1 s1 = Single_1.getInstance();
- Single_1 s2 = Single_1.getInstance();
- System.out.println(s2.getNum());
- s1.setNum(30);
- System.out.println(s2.getNum());
- Single_2 s3 = Single_2.getInstance();
- Single_2 s4 = Single_2.getInstance();
- System.out.println(s4.getNum());
- s3.setNum(30);
- System.out.println(s4.getNum());
- }
- }
复制代码 |
|