设计模式(六):原型模式——浅复制

来源:互联网 发布:黑塞矩阵 编辑:程序博客网 时间:2024/05/02 00:01

原型模式(Prototype):用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。

浅复制:复制引用但不复制引用的对象,原始对象及其副本引用同一对象

    //说明:MemberwiseClone()方法是这样的,如果字段是值类型的,则对该字段执行逐位复制,如果字段是引用类型,则    //复制引用但不复制引用的对象:因此,原始对象及其复本引用同一对象。这就是浅复制    class Resume : ICloneable    {        private string name;        private string sex;        private string age;        private string timeArea;        private string company;        public Resume(string name)        {            this.name = name;        }        public void SetPersonalInfo(string sex, string age)        {            this.sex = sex;            this.age = age;        }        public void SetWorkExperience(string timeArea, string company)        {            this.timeArea = timeArea;            this.company = company;        }        public void Display()        {            Console.WriteLine("{0} {1} {2}",name,sex,age);            Console.WriteLine("工作经历:{0} {1}",timeArea,company);        }        public object Clone()        {            return (Object) this.MemberwiseClone();        }    }
    /// <summary>    /// 程序主体    /// </summary>    class Program    {        static void Main(string[] args)        {            var a = new Resume("大鸟");            a.SetPersonalInfo("男","29");            a.SetWorkExperience("1999-2000","XX公司");            var b = (Resume)a.Clone();            b.SetWorkExperience("1998-2005","YY公司");            var c = (Resume) a.Clone();            c.SetPersonalInfo("男","24");            a.Display();            b.Display();            c.Display();            Console.Read();        }    }

运行结果:


0 0
原创粉丝点击