zoukankan      html  css  js  c++  java
  • 创建型模式特立独行的两位大侠

    既是大侠,本事当然了得。还记得拔一撮猴毛,吹出万千小猴子,这就是我们第一位大侠(原型模式)的本事。另一位,虽有真假猴王让人分辨不清,当真的永远都是真的,这就是单例模式。

    原型模式

          1.复制一个(不是新建)已经存在的实例(继承Clone)来返回新的实例;

          2.多用于创建复制或者耗时的实例,此时比从头创建更高效。

    UML:

    小Q截图-20131129100535

    原型:

       1:  public class Prototype implements Cloneable {
       2:      ...
       3:      ...
       4:      public Object clone(){
       5:          try {
       6:              return super.clone();
       7:          } catch (Exception e) {
       8:              e.printStackTrace();
       9:              return null;
      10:          }
      11:      }
      12:  }

    代码:

       1:      public static void main(String[] args) {
       2:          Prototype prototype=new ConcretePrototype("prototype");
       3:          Prototype prototype2=(Prototype)prototype.clone();
       4:          System.out.println(prototype.getName());
       5:          System.out.println(prototype2.getName());
       6:          
       7:  //        prototype
       8:  //        prototype
       9:      }

    单例模式

            保证一个类仅有一个实例,并提供一个访问他的全局变量

    单例:

       1:  public class Singleton {
       2:      /**
       3:       * 静态的自身变量
       4:       */
       5:      private static Singleton singleton;
       6:     
       7:      /**
       8:       * 构造函数私有化,防止外界直接创建
       9:       */
      10:      private Singleton(){
      11:          
      12:      }
      13:      
      14:      public static Singleton getSingleton(){
      15:          if (singleton==null) {
      16:              singleton=new Singleton();
      17:          }
      18:          return singleton;
      19:      }
      20:  }

    代码:

       1:      public static void main(String[] args) {
       2:          Singleton singleton=Singleton.getSingleton();
       3:          Singleton singleton2=Singleton.getSingleton();
       4:          
       5:          System.out.println(singleton);
       6:          System.out.println(singleton2);
       7:  //        Singleton.Singleton@9e5c73
       8:  //        Singleton.Singleton@9e5c73
       9:      }
  • 相关阅读:
    python实现读取并显示图片的两种方法
    如何在jupyter中安装R
    FPGA设计千兆以太网MAC(3)——数据缓存及位宽转换模块设计与验证
    FPGA设计千兆以太网MAC(2)——以太网协议及设计规划
    FIFO深度计算
    【不定期更新】FPGA/IC岗位常见笔试面试题总结(基础知识)
    【原创】建立与保持时间裕量详细分析
    利用ZYNQ SOC快速打开算法验证通路(6)——利用AXI总线实时配置sysGen子系统
    【转载】泰勒展开式
    利用ZYNQ SOC快速打开算法验证通路(5)——system generator算法IP导入IP integrator
  • 原文地址:https://www.cnblogs.com/haichao/p/3449102.html
Copyright © 2011-2022 走看看