.NET 设计模式—原型模式(Prototype Pattern)

简介

原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式,当每次都新创建一个对象的代价比较大时,可以采用这种模式,它用于创建当前对象的克隆。

优点

  • 提高性能;
  • 向客户隐藏了创建新实例的复杂性;
  • 逃避构造函数的约束;

缺点

  • 每个类必须配备一个克隆方法
  • 配备克隆方法需要对类的功能进行通盘考虑,这对于全新的类不是很难,但对于已有的类不一定很容易,特别当一个类引用不支持串行化的间接对象,或者引用含有循环结构的时候。

使用场景

  • 资源优化场景:类初始化需要消化非常多的资源,这个资源包括数据、硬件资源等。
  • 性能和安全要求的场景:通过new产生一个对象需要非常繁琐的数据准备或访问权限,则可以使用原型模式。
  • 一个对象多个修改者的场景:一个对象需要提供给其他对象访问,而且各个调用者可能都需要修改其值时,可以考虑使用原型模式拷贝多个对象供调用者使用。

实现

cs 复制代码
/// <summary>
/// 原型模式
/// </summary>
public class Prototype
{
    /// <summary>
    /// 可以把需要处理的逻辑放在构造函数中
    /// </summary>
    private Prototype()
    {

    }

    /// <summary>
    /// 静态字段也是由CLR保障的,在程序第一次使用该类型之前,完成初始化,且只初始化一次
    /// </summary>
    private static Prototype _instance = new Prototype();

    /// <summary>
    /// 每次都返回_instance的克隆对象
    /// 内存拷贝,效率很高
    /// </summary>
    /// <returns></returns>
    public static Prototype GetInstance()
    {
        return (Prototype)_instance.MemberwiseClone();
    }
}

总结

Singleton模式解决的是实体对象个数的问题。除了Singleton之外,其他创建型模式解决的都是new所带来的耦合关系。

而Prototype则是通过原型(一个特殊的工厂类)来克隆"易变对象"。(其实原型就是一个特殊的单例)。

相关推荐
Abladol-aj1 小时前
并发和并行的基础知识
java·linux·windows
清水白石0081 小时前
从一个“支付状态不一致“的bug,看大型分布式系统的“隐藏杀机“
java·数据库·bug
吾日三省吾码6 小时前
JVM 性能调优
java
弗拉唐7 小时前
springBoot,mp,ssm整合案例
java·spring boot·mybatis
oi778 小时前
使用itextpdf进行pdf模版填充中文文本时部分字不显示问题
java·服务器
少说多做3438 小时前
Android 不同情况下使用 runOnUiThread
android·java
知兀8 小时前
Java的方法、基本和引用数据类型
java·笔记·黑马程序员
蓝黑20209 小时前
IntelliJ IDEA常用快捷键
java·ide·intellij-idea
Ysjt | 深9 小时前
C++多线程编程入门教程(优质版)
java·开发语言·jvm·c++