(一)原型设计模式 结构图
原型模式其实就是从一个对象再创建另外一个可定制的对象,而且不需要知道任何创建的细节.
(二) 原型模式代码
原型类
abstract class Prototype{ private String id; public Prototype(String id){ thid.id = id; } public String Id{ get{ retrun id;} } public abstract Prototype Clone(); }
具体原型类
class ConcretePrototype1 : Prototype{ public ConcretePrototype1(String id) : base(id){ } public override Prototype Clone(){ return (Prototype)this.MemberwiseClone(); } }
客户端代码
static void Main(String[] args){ ConcretePrototype1 p1 = new ConcretePrototype1("I"); ConcretePrototype1 c1 = (ConcretePrototype1)p1.Clone(); Console.WriteLine("Cloned:{0}",c1.Id); Console.Read(); }
(三)浅赋值和深复制
如果字段是值类型的,则对该字段执行逐位复制,如果字段是引用类型,则复制引用但不复制引用的对象.
浅复制: 被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用都仍然指向原来的对象.
深复制: 深复制把引用对象的变量指向复制过的新对象,而不是原有的被引用的对象.