单例设计模式 (代码实现)
博客专区 > Jusenr 的博客 > 博客详情
单例设计模式 (代码实现)
Jusenr 发表于2年前
单例设计模式 (代码实现)
  • 发表于 2年前
  • 阅读 2
  • 收藏 0
  • 点赞 2
  • 评论 0

标题:腾讯云 新注册用户域名抢购1元起>>>   

 

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

 

  创建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
博文 20
码字总数 10876
×
Jusenr
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: