原型设计模式

一、应用场景

在一个特定的场景中经常需要出现多个相同但状态各异的对象,通常的解决方法是通过new创建这些对象之后分别去设置这些对象的状态。原型设计模式提供了更快捷、更有效的解决方法。

二、意图

通过复制(克隆、拷贝)一个指定类型的对象来创建更多同类型的对象。这个指定的对象可被称为“原型”对象,也就是通过复制原型对象来得到更多同类型的对象。

三、说明

原型设计模式的拷贝可以被分为深拷贝与浅拷贝。

深拷贝是指复制后的对象同原型对象不共享任何数据。如对象A内的一个引用字段,它同复制对象B内的相同引用字段不引用相同的对象,而是为对象B创建一个新的引用对象。

浅拷贝不同于深拷贝,它的原型内的引用字段同复制对象内的引用字段,引用的是同一个对象。

C#中的拷贝可以使用Object类的成员MemberwiseClone进行浅拷贝,可以使用BinaryFormatter.Serialized成员串行化技术来进行深度拷贝。

C++中的拷贝直接使用类中的复制构造函数进行拷贝。

四、例子

public Interface Car

{

    string CarName{get;set;}

    Car Clone();
}

public class NewCar:Car

{

    private string m_carName;

    public string CarName

    {

        get

        {

             return m_carName;

        }

        set

       {

             m_carName=value;

       }

    }

    public override Car Clone()

    {

         拷贝代码

    }
}

void Main()

{

    Car car1=new NewCar();

    car1.CarName="小汽车";

    Car car2=car1.Clone();

    car2.CarName="大卡车";

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值