zoukankan      html  css  js  c++  java
  • 设计模式(五)Singleton模式

      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来声明。

      单例模式类图如下。

     

    儿女情长什么的,最影响我们闯荡江湖了。
  • 相关阅读:
    基于硬件的毕业设计论文的书写
    C语言程序设计课程总结
    嵌入式程序设计第三周成绩汇总
    C第十八次课
    2016-4班平时成绩第9周排名和汇总
    2016-3班平时成绩第9周汇总和排名
    第十七次课大纲
    第十六次课大纲
    2020-02-28
    2020-02-27
  • 原文地址:https://www.cnblogs.com/BigJunOba/p/8674354.html
Copyright © 2011-2022 走看看