首页 > 代码库 > 单例的设计模式代码演示

单例的设计模式代码演示

1、饿汉式

 1 package com.wisezone.singleton02;
 2 /**
 3  * java中有23种对象设计模式
 4  * 单例设计模式:解决一个类中只存在一个对象
 5  * @author 王东海
 6  * @date. 2016年8月30日
 7  * @version v1.0
 8  */
 9 //饿汉式:先初始化对象。
10 public class Singleton
11 {
12     //private的构造器,不能在类的外部创建该类的对象
13     private Singleton()
14     {
15         
16     }
17     
18     //私有的,只能在类的内部访问
19     private static Singleton s = new Singleton();
20     
21     //getInstance()为static,不用创建对象即可访问
22     public static Singleton getInstance()
23     {
24         return s;
25     }
26 }

2、懒汉式

 1 package com.wisezone.singleton02;
 2 
 3 //懒汉式:对象是放在调用时,才初始化,也称为对象的延时加载
 4 public class Singleton2
 5 {
 6     //1.将构造器私有化,保证在此类的外部,不能调用本类的构造器。
 7     private Singleton2()
 8     {
 9         
10     }
11     //2.先声明类的引用
12     //4.也需要配合static的方法,用static修饰此类的引用。
13     private static Singleton2 ss = null;
14     
15     //3.设置公共的方法来访问类的实例
16     public static Singleton2 getInstance()
17     {
18         //3.1如果类的实例未创建,那些先要创建,然后返回给调用者:本类。因此,需要static 修饰。
19         if (ss == null)
20         {
21             ss = new Singleton2();
22         }
23         //3.2 若有了类的实例,直接返回给调用者。
24         return ss;
25     }
26     
27 }

3、测试结果

 1 package com.wisezone.singleton02;
 2 
 3 /**
 4  * 测试单例的设计模式
 5  * @author 王东海
 6  * @date. 2016年8月30日
 7  * @version v1.0
 8  */
 9 public class Test
10 {
11     public static void main(String[] args)
12     {
13         //饿汉式测试
14         System.out.println("饿汉式测试结果:");
15         Singleton sin = Singleton.getInstance();//访问静态方法
16         Singleton sin2 = Singleton.getInstance();
17         System.out.println(sin);
18         System.out.println(sin2);
19         
20         System.out.println();
21         
22         //懒汉式测试
23         System.out.println("懒汉式测试结果:");
24         Singleton2 s1 = Singleton2.getInstance();
25         Singleton2 s2 = Singleton2.getInstance();
26         System.out.println(s1);
27         System.out.println(s2);
28         
29     }
30 }

 

单例的设计模式代码演示