zoukankan      html  css  js  c++  java
  • [Design] Protetype Pattern

    创建模式是对类的实例化过程的抽象化,分为类的创建模式和对象的创建模式。
    类的创建模式
      使用继承关系把类的创建过程延迟到子类,从而封装了客户端将得到哪些具体类的信息,并且隐藏了这些类的实例是如何创建和组合在一起的。
    对象的创建模式
          把对象的创建过程动态的委派给另一个对象,从来动态的决定客户端将得到哪些具体类的实例,以及这些类是实例是如何创建和组合在一起的。
    --------------------------------------------------------
    原始模型模式
       原始模型模式属于对象的创建模式。通过给出一个原型对象来指明所要创建对象的类型,然后通过复制原型对象的方法来创建出更多的同类型的对象。
    适用于产品结构可能会有经常性变化的系统。
    优点
       1. 允许动态的增加或减少产品类。由于创建产品实例的方法是产品类内部具有的,因此,增加新产品对整个结构没有影响。
       2. 产品类不需要非得有任何事先确定的等级结构,因为原始模型模式适用于任何的等级结构。
    缺点
         每一个类都必须配备一个克隆方法。配备克隆方法需要对类的功能进行通盘考虑,对新类问题不大。但对于已经有的类不太容易,特别是不支持串行化或引用含有循环结构的时候。

    原始模型模式有两种表现形式:简单形式和登记形式。
    简单形式的原始模型模式

    • 1、客户角色

        客户类提出创建对象的请求。

    • 2、抽象原型角色

        这是一个抽象角色,一般有接口或抽象类实现。此角色给出所有的具体原型类所需的接口。

    • 3、具体原型角色

        被复制的对象,此角色需要实现抽象的原型角色所要求的接口。

     登记形式的原始模型模式

    • 1、 客户端角色

        提出创建对象的请求。

    • 2、抽象原型角色

        给出所有的具体原型类所需的接口。一般由接口或抽象类实现。

    • 3、具体原型角色

        被复制的对象,需要实现抽象的原型角色所需要的接口。

    • 4、原型管理器角色

        创建具体原型类的对象,并记录每一个被创建的对象。

  • 相关阅读:
    dubbo+zookeeper报错:com.alibaba.dubbo.rpc.RpcException: Failed to invoke the method
    CoreException: Could not get the value for parameter compilerId for plugin execution default-compile: PluginResolutionException: Plugin org.apache.maven.plugins:maven-compiler-plugin:3.1
    Spring容器加载配置文件
    Java基础(一)字符串之如何删除指定的字符
    Java基础(二)数组之如何排序数组并插入元素
    Java基础(一)字符串之如何比较字符串
    Spring的事务管理
    Java使用split()截取字符串
    JavaWeb过滤器实现页面跳转至登录页面
    jQuery获取session中的值
  • 原文地址:https://www.cnblogs.com/abeen/p/1442209.html
Copyright © 2011-2022 走看看