设计模式:原型模式

来源:互联网 发布:钓鱼岛实际控制权知乎 编辑:程序博客网 时间:2024/06/05 17:36

原型模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。即从一个对象再创建另外一个可定制的对象,而且不需知道任何创建的细节。
原型模式的优势:不用重新初始化对象,而是动态地获得对象运行时的状态。

注意:
浅复制:被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用都仍然指向原来的对象。
深复制:把引用对象的变量指向复制过的新对象,而不是原来的被引用的对象。

using System;public class Program{   abstract class Prototype    {        private string id;        public Prototype(string id)        {            this.id = id;        }        public string Id        {            get            {                return 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();    }}

其中.NET在System命名空间中提供了ICloneable接口,其中就是唯一的一个方法Clone(),只需要实现这个接口就可以完成原型模式。

原创粉丝点击