设计模式(Design Pattern)之原型模式(Prototype Pattern)


Prototype(原型模式):用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。

当一个系统应该独立于它的产品创建、构成和表示时,要使用Prototype模式;

当要实例化的类是在运行时刻指定时,例如,通过动态装载;或者为了避免创建一个与产品类层次平行的工厂类层次时;

当一个类的实例只能有几个不同状态组合中的一种时。建立相应数目的原型并克隆它们可能比每次用合适的状态手工实例化该类更方便一些。

设计模式(Design Pattern)之原型模式(Prototype Pattern)

个人见解:

  这个东西,说白了就是实现一个ICloneable接口,该接口中有一个Clone方法,允许通过clone方法构建一个该对象的浅表副本。

  所谓浅表副本,指的是如果字段是值类型,则对字段进行逐位复制;如果是引用类型,则复制引用,但不复制所引用的对象。所以,当类中存在一个引用类型的字段,在调用方法MemberwiseClone()实现Clone接口方法时,只能复制它的一个引用。

  深表复制则将引用类型也指定了新的对象。Framework没有给出深表复制的方法,需要自己实现。类似于Dataset的Clone()和Copy()方法,一个浅表复制,一个是深表复制。




本文转自齐师傅博客园博客,原文链接:http://www.cnblogs.com/youring2/archive/2011/08/12/DesignPattern-Prototype.html,如需转载请自行联系原作者