首页 > 其他 > 详细

原型模式

时间:2015-03-26 16:30:31      阅读:92      评论:0      收藏:0      [点我收藏+]
  • GoF中的定义:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象
  • 简单的例子:

//原型类

Abstract class Prototype

{

Private string name;

Public string Name

{

Get{return name;}

}

}

 

//具体原型类

Class ConcretePrototype : Prototype

{

Public override Prototype Clone()

{

Return (Prototype)this. MemberwiseClone();

}

}

 

//客户端代码

Main()

{

ConcreteProtype  a = new  ConcreteProtype();

ConcreteProtype  b = (ConcreteProtype)b.Clone();   //这样就能够得到新的实例

}

 

  • 实现关键:

先介绍一下这条设计模式在.net中,实现使用的关键方法MemberwiseClone()

该方法为.net的内建方法,MSDN中的解释:

       方法创建一个浅表副本,具体来说就是创建一个新对象,然后将当前对象的非静态字段复制到该新对象。如果字段是值类型的,则对该字段执行逐位复制。如果字段是引用类型,则复制引用但不复制引用的对象;因此,原始对象及其复本引用同一对象。

*注意点:MemberwiseClone()方法是浅复制

*.net中,system的命名空间中提供了ICloneable接口,实现其中唯一的方法Clone(),就可以完成原型模式了

 

  • 优点:

从例子中不难看出,克隆实例的时候,跳过了类初始化的过程,隐藏了对象创建的细节,复制并创建了一个新的实例。若某些类中的构造函数消耗资源特别大,使用该模式能够使程序的运行性能大大提高。

原型模式

原文:http://www.cnblogs.com/fatphone/p/4368762.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!