设计模式:原型模式

定义:用原型示例指定创建对象的种类,并通过拷贝这些原型创建新的对象。

         原型模式其实就是从一个对象再创建一个可定制的对象,而不需要知道任何创建的细节。

结构图

Prototype.cs:

abstract class Prototype
    {
        private string id;

        public Prototype(string id)
        {
            this.id = id;
        }

        public string Id
        {
            get { return id; }
        }

        public abstract Prototype Clone();
    }
View Code

ConcretePrototype.cs:

 class ConcretePrototype : Prototype
    {
        public ConcretePrototype(string id)
            : base(id)
        { }

        public override Prototype Clone()
        {
            return (Prototype)this.MemberwiseClone();
        }
    }
View Code


对于.Net而言,那个原型抽象类Prototype是不用到的,因为克隆太常用,所以在.Net在System命名空间中提供了ICloneable接口,其中包含方法Clone()。

因此该示例可做如下修改:

1.删除Prototype.cs

2.ConcretePrototype.cs修改为如下图

 优点隐藏对象创建的细节,又大大的提高了性能

          如果不使用该模式,而是每次都是用New实例化对象,那么每次都要执行一次构造函数,如果构造函数执行时间很长,那么多次的执行这个初始化操作将非常低效。

补充:

浅复制: 被复制对象的所有变量都含有与原来的对象相同的值,而其所有的对其他对象的引用都仍然指向原来的对象。

深复制:被复制对象会将所有非引用类型的字段复制给新对象,同时将引用类型所指向地址中存的对象复制给新的对象。

区别:

浅复制和深复制的区别仅在于对引用类型的对待上,一个是复制的地址,一个是复制的地址指向位置的数据.

        

原文地址:https://www.cnblogs.com/qianxingdewoniu/p/3544321.html