您的位置:首页 > 编程语言

[置顶]单例设计模式 (代码实现)

2016-07-27 22:36 519 查看
 
  ---单例设计模式之饿汉式---

 

  创建SingleInstance类

1 /**
2  * 单例设计模式之饿汉式
3  */
4 public class SingleInstance {
5     /**
6      * 私有化构造方法
7      */
8     private SingleInstance() {}
9     /**
10      * 成员变量
11      */
12     private static SingleInstance instance = new SingleInstance() ;
13     /**
14      * 提供一个静态的成员方法,返回该对象
15      */
16     public static SingleInstance getInstance() {
17         return instance ;
18     }
19 }


 

  创建测试类SingleInstanceDemo

 

1 /**
2  * 单例设计模式的思想:    保证该类在内存中只有一个实例(对象)
3  * 优点节省内存,提高内存利用率
4  */
5 public class SingleInstanceDemo {
6
7     public static void main(String[] args) {
8
9         // 调用方法获取对象
10         SingleInstance instance1 = SingleInstance.getInstance() ;
11         SingleInstance instance2 = SingleInstance.getInstance() ;
12
13         // 输出
14         System.out.println(instance1 == instance2);
15     }
16 }


 

 

-------------------------------------------------------------------------------------------------------------
 

  ---单例设计模式之懒汉式---

 

  创建SingleInstance2类

1 /**
2  * 单例设计模式之懒汉式
3  *
4  * 面试中写那种单例设计模式呢?
5  *         面试中写懒汉式:    因为懒汉式体现了两种思想, 第一种线程问题 , 第二种 延迟加载
6  *
7  *    开发中写饿汉式
8  */
9 public class SingleInstance2 {
10     /**
11      * 私有化构造方法
12      */
13     private SingleInstance2() {}
14     /**
15      * 提供一个成员变量
16      */
17     private static SingleInstance2 instance = null ;
18     /**
19      * 提供一个静态的成员方法
20      */
21     public static synchronized SingleInstance2 getInstance() {
22
23         if(instance == null){
24             instance = new SingleInstance2() ;
25         }
26         return instance ;
27     }
28 }


 

  创建测试类SingleInstanceDemo2

 

1 public class SingleInstance2Demo {
2
3     public static void main(String[] args) {
4
5         // 获取对象
6         SingleInstance2 instance1 = SingleInstance2.getInstance() ;
7         SingleInstance2 instance2 = SingleInstance2.getInstance() ;
8
9         // 比较
10         System.out.println(instance1 == instance2);
11
12     }
13
14 }


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: