设计模式(Design Pattern)之原型模式(Prototype Pattern)
2011-08-12 10:48
375 查看
Prototype(原型模式):用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
当一个系统应该独立于它的产品创建、构成和表示时,要使用Prototype模式;
当要实例化的类是在运行时刻指定时,例如,通过动态装载;或者为了避免创建一个与产品类层次平行的工厂类层次时;
当一个类的实例只能有几个不同状态组合中的一种时。建立相应数目的原型并克隆它们可能比每次用合适的状态手工实例化该类更方便一些。
个人见解:
这个东西,说白了就是实现一个ICloneable接口,该接口中有一个Clone方法,允许通过clone方法构建一个该对象的浅表副本。
所谓浅表副本,指的是如果字段是值类型,则对字段进行逐位复制;如果是引用类型,则复制引用,但不复制所引用的对象。所以,当类中存在一个引用类型的字段,在调用方法MemberwiseClone()实现Clone接口方法时,只能复制它的一个引用。
深表复制则将引用类型也指定了新的对象。Framework没有给出深表复制的方法,需要自己实现。类似于Dataset的Clone()和Copy()方法,一个浅表复制,一个是深表复制。
当一个系统应该独立于它的产品创建、构成和表示时,要使用Prototype模式;
当要实例化的类是在运行时刻指定时,例如,通过动态装载;或者为了避免创建一个与产品类层次平行的工厂类层次时;
当一个类的实例只能有几个不同状态组合中的一种时。建立相应数目的原型并克隆它们可能比每次用合适的状态手工实例化该类更方便一些。
个人见解:
这个东西,说白了就是实现一个ICloneable接口,该接口中有一个Clone方法,允许通过clone方法构建一个该对象的浅表副本。
所谓浅表副本,指的是如果字段是值类型,则对字段进行逐位复制;如果是引用类型,则复制引用,但不复制所引用的对象。所以,当类中存在一个引用类型的字段,在调用方法MemberwiseClone()实现Clone接口方法时,只能复制它的一个引用。
深表复制则将引用类型也指定了新的对象。Framework没有给出深表复制的方法,需要自己实现。类似于Dataset的Clone()和Copy()方法,一个浅表复制,一个是深表复制。
相关文章推荐
- 设计模式(Design Pattern) - 创建型模式(Creational Pattern) - 原型模式(Prototype) - Java实现
- 【重读设计模式】原型模式
- Java设计模式之原型模式
- 原型模式(prototype)-设计模式(四)
- 设计模式学习—中介者模式(Mediator Design Pattern)
- 设计模式(5)-原型模式
- 【设计模式】——原型模式VS模板方法模式
- JAVA设计模式之原型模式
- java 设计模式 之 原型模式
- 10. 星际争霸之php设计模式--原型模式
- 【设计模式】单例模式-生成器模式-原型模式
- 23种设计模式之原型模式
- 面向对象的设计模式(三),原型模式
- Head First 设计模式 Design Pattern 3-4 Decorator, Factory
- java设计模式——原型模式
- 设计模式_原型模式
- C#设计模式(6)-原型模式
- JAVA基础9(设计模式 单例模式 工厂模式 建造者模式 原型模式)
- 设计模式------PROTOTYPE(原型),TEMPLATE(模板)
- Kotlin设计模式 - 原型模式(Prototype)