5种创建型设计模式-原型模式(PrototypePattern)

原型模式使用原型实例指定创建对象的种类,并通过复制这些原型创建新的对象。适用于独立于产品创建的情况,可避免创建与产品类层次平行的工厂类。该模式允许通过注册原型实例将具体产品类并入系统。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

Prototype Pattern也是一种创建型模式,它关注的是大量相同或相似对象的创建问题。应用原型模式就是建立一个原型,然后通过对原型来进行复制的方法,来产生一个和原型相同或相似的新对象,或者说用原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象。

在这里插入图片描述

public abstract class Propertype
{
    public abstract Propertype Clone();
}

public class ConcretePrototype : Propertype
{
    public override Propertype Clone()
    {
        return (Propertype)this.MemberwiseClone();
    }
}

class Program
{
    static void Main(string[] args)
    {
        ConcretePrototype p = new ConcretePrototype();
        p.Clone();
    }
}

情形:
  ◊ 当一个系统应该独立于它的产品创建、构成和表示时;
  ◊ 当要实例化的类是在运行时刻指定时,例如通过动态装载来创建一个类;
  ◊ 为了避免创建一个与产品类层次平行的工厂类层次时;
  ◊ 当一个类的实例只能有几个不同状态组合中的一种时。建立相应数目的原型并Clone它们可能比每次用合适的状态手工实例化该类更方便一些。
  
特点:
  ◊ 对客户隐藏了具体的产品类,因此减少了客户知道的名字的数目;
  ◊ 允许客户只通过注册原型实例就可以将一个具体产品类并入到系统中,客户可以在运行时刻建立和删除原型;
  ◊ 减少了子类的构造。原型模式是Clone一个原型而不是请求工厂方法创建一个,所以它不需要一个与具体产品类平行的Creator类层次;
  ◊ 原型模式具有给一个应用软件动态加载新功能的能力。由于Prototype的独立性较高,可以很容易动态加载新功能而不影响旧系统;
  ◊ 产品类不需要非得有任何事先确定的等级结构,因为原型模式适用于任何的等级结构;
  ◊ 原型模式的最重要缺点就是每一个类必须配备一个Clone方法,而且这个Clone方法需要对类的功能进行通盘考虑。这对全新的类来说不是很难,但对已有的类进行改造时,不一定是容易的事。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值