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

      单例模式类图如下。

     

    儿女情长什么的,最影响我们闯荡江湖了。
  • 相关阅读:
    [zz]Ubuntu源签名错误/Ubuntu 更新源签名错误 –BADSIG 40976EAF437D05B5
    [zz]GNU C __attribute__ 机制简介
    [zz]为小米创建虚拟机路由器
    liburcu 库
    多代理集群调度:可伸缩性和灵活性
    automake的使用速查
    automake之简单的例子
    ajax原生
    Cookie 和Session 的原理
    路径问题
  • 原文地址:https://www.cnblogs.com/BigJunOba/p/8674354.html
Copyright © 2011-2022 走看看