原型模式-Prototype

名称:

    原型模式(Prototype Pattern)-对象创建型模式

 

问题:

    Specify the kind of objects to create using a prototypical instance, and create new objects by copying this prototype.

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

 

适用性:

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

    -当要实例化的类是在运行时刻指定时,例如,通过动态装载

    -为了避免创建一个与产品类层次平行的工厂类层次时

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

 

协作:

    客户请求一个原型克隆自身。

 

优点和缺点:

    1、它对客户隐藏了具体的产品类,因此减少了客户知道的名字的数目。此外,用户无需改变即可使用与特定应用相关的类。

    2、运行时刻增加和删除产品。

    3、改变值以指定新对象。

    4、改变结构以指定新对象。

    5、减少子类的构造。

    6、用类动态配置应用。

 

解决方案:

    

1、 模式的参与者

1、Prototype

-声明一个克隆自身的接口。

2、ConcretePrototype

-实现一个克隆自身的操作。

3、Client

-让一个原型克隆自身从而创建一个新的对象。

2.实现方式

public abstract class Prototype implements Cloneable {  
  
    public Object clone() throws CloneNotSupportedException {  
        Prototype proto = (Prototype) super.clone();  
        return proto;  
    }  
}  

 

原型模式通过拷贝一个现有对象生成新对象。浅默认的拷贝为浅拷贝,深拷贝通过重写 Cloneable实现,或者 Serializable读取二进制流。

 

参考资料

《设计模式:可复用面向对象软件的基础》

posted @   diameter  阅读(117)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示