码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式(五)Singleton模式

时间:2018-03-30 10:14:34      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:art   turn   oba   display   void   auto   ==   图片   static   

  Singleton模式就是确保只生成一个实例的模式。这里有两个意思,即想确保任何情况下都绝对只有一个实例和想在程序上表现出“只存在一个实例”。

  下面通过一个实例来说明这种设计模式。

  技术分享图片

 1 package BigJunOba.bjtu.Singleton;
 2 
 3 public class Singleton {
 4     
 5     private static Singleton singleton = new Singleton();
 6     
 7     private Singleton() {
 8         System.out.println("生成了一个实例");
 9     }
10     public static Singleton getInstance() {
11         return singleton;
12     }
13 }

  Singleton类只会生成一个实例。主要方法是在声明实例域时,使用static将singleton初始化为Singleton的示例。初始化仅仅在类被加载时进行一次。由于Singleton的构造器是private的,是因为这样可以禁止从Singleton外部调用构造器,也就是说,不能从Singleton类以外的代码中调用构造器new Singleton()

 1 package BigJunOba.bjtu.Singleton;
 2 
 3 public class Main {
 4 
 5     public static void main(String[] args) {
 6         System.out.println("Start.");
 7         Singleton obj1 = Singleton.getInstance();
 8         Singleton obj2 = Singleton.getInstance();
 9         if(obj1 == obj2) {
10             System.out.println("是相同的示例");
11         } else {
12             System.out.println("是不相同的示例");
13         }
14         System.out.println("End.");
15     }
16 }

  这里是用来观察是否只生成了一个实例,如果只调用了一次构造器,那么就只会打印出一句“生成了一个实例。”

Start.
生成了一个实例
是相同的示例
End.

   通过输出结果我们可以看到,确实是只生成了一个实例。这个设计模式的关键就是构造器使用private来声明。

  单例模式类图如下。

技术分享图片

 

 

 

设计模式(五)Singleton模式

标签:art   turn   oba   display   void   auto   ==   图片   static   

原文地址:https://www.cnblogs.com/BigJunOba/p/8674354.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!