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

来源:互联网 发布:linux配置网络 编辑:程序博客网 时间:2024/06/08 01:29
 

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

 

  创建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 }

 

0 0
原创粉丝点击