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

简介:

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

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

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

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

个人见解:

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

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

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




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

相关文章
|
1天前
|
设计模式 JavaScript
js设计模式【详解】—— 原型模式
js设计模式【详解】—— 原型模式
14 6
|
4天前
|
设计模式
设计模式-05建造者模式(Builder Pattern)
设计模式-05建造者模式(Builder Pattern)
|
6天前
|
设计模式 Java
Java设计模式之原型模式详解
Java设计模式之原型模式详解
|
7天前
|
设计模式
原型模式-大话设计模式
原型模式-大话设计模式
7 0
|
12天前
|
设计模式 Java Spring
设计模式——原型模式
设计模式——原型模式
|
25天前
|
设计模式 存储 架构师
设计模式-值类型与引用类型、深拷贝与浅拷贝、原型模式详解
 如果拷贝的时候共享被引用的对象就是浅拷贝,如果被引用的对象也拷贝一份出来就是深拷贝。(深拷贝就是说重新new一个对象,然后把之前的那个对象的属性值在重新赋值给这个用户)
147 0
|
2月前
|
设计模式 安全 Java
【设计模式】JAVA Design Patterns——Curiously Recurring Template Pattern(奇异递归模板模式)
该文介绍了一种C++的编程技巧——奇异递归模板模式(CRTP),旨在让派生组件能继承基本组件的特定功能。通过示例展示了如何创建一个`Fighter`接口和`MmaFighter`类,其中`MmaFighter`及其子类如`MmaBantamweightFighter`和`MmaHeavyweightFighter`强制类型安全,确保相同重量级的拳手之间才能进行比赛。这种设计避免了不同重量级拳手间的错误匹配,编译时会报错。CRTP适用于处理类型冲突、参数化类方法和限制方法只对相同类型实例生效的情况。
【设计模式】JAVA Design Patterns——Curiously Recurring Template Pattern(奇异递归模板模式)
|
2月前
|
设计模式 Java 数据库
【设计模式】JAVA Design Patterns——Converter(转换器模式)
转换器模式旨在实现不同类型间的双向转换,减少样板代码。它通过通用的Converter类和特定的转换器(如UserConverter)简化实例映射。Converter类包含两个Function对象,用于不同类型的转换,同时提供列表转换方法。当需要在逻辑上对应的类型间转换,或处理DTO、DO时,此模式尤为适用。
【设计模式】JAVA Design Patterns——Converter(转换器模式)
|
2月前
|
设计模式 存储 Java
【设计模式】JAVA Design Patterns——Command(事务模式)
【设计模式】JAVA Design Patterns——Command(事务模式)
|
2月前
|
设计模式 Java API
【设计模式】JAVA Design Patterns——Combinator(功能模式)
【设计模式】JAVA Design Patterns——Combinator(功能模式)