首页 > 代码库 > 【设计模式】 原型

【设计模式】 原型

【设计模式】 原型

 1.  以一个对象为原型, 通过复制原型创建新的对象

 2. 适用场景 :

  a .  需要创建多个对象,且对象间只有个别属性需要改变, 使用原型可减少创建对象的开销

 3. 代码 

    class Prototype    {        public static void Test()        {            var m = new Model() { ModelName = "MN" };            var v1 = new PrototypeModel { Name = "v1", Model = m };            var v2 = v1.Clone(); // 浅表克隆, 如 v2 的 Model 只复制了 v1 的引用。 深表克隆得手动复制属性            v2.SetName("v2");            v2.SetModelName("m2");            Console.WriteLine(v2.Name + ":" + v2.Model.ModelName);            Console.WriteLine(v1.Name + ":" + v1.Model.ModelName);        }    }    internal class PrototypeModel    {        public string Name { get; set; }        public Model Model { get; set; }        public void SetName(string name)        {            this.Name = name;        }        public void SetModelName(string name)        {            if (Model != null)            {                Model.ModelName = name;            }        }        public PrototypeModel Clone()        {            return (PrototypeModel)this.MemberwiseClone();        }    }    internal class Model    {        public string ModelName { get; set; }    }

 

【设计模式】 原型