[Design] Protetype Pattern

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

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

  • 1、客户角色

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

  • 2、抽象原型角色

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

  • 3、具体原型角色

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

 登记形式的原始模型模式

  • 1、 客户端角色

    提出创建对象的请求。

  • 2、抽象原型角色

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

  • 3、具体原型角色

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

  • 4、原型管理器角色

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

posted @ 2009-04-23 16:34  ABeen  阅读(295)  评论(0编辑  收藏  举报