05.原型模式

原型模式

Prototype Pattern

用于创建重复的对象,同时又能保证性能。

当需要创建一个与已有对象类似的对象,或者当创建对象的成本比克隆更高时,使用原型模式

通过实现Clone方式生成新的实例,根据需要选择深copy和浅copy

namespace 原型模式
{
    /// <summary>
    /// 当创建一个类的实例的过程很昂贵或很复杂,
    /// 并且我们需要创建多个这样类的实例时,
    /// 如果我们用new操作符去创建这样的类实例,
    /// 这未免会增加创建类的复杂度和耗费更多的内存空间,
    /// 因为这样在内存中分配了多个一样的类实例对象
    /// </summary>
    public abstract class MonkeyKingPrototype
    {
        public string Id { get; set; }
        public MonkeyKingPrototype(string id)
        {
            this.Id = id;
        }

        public abstract MonkeyKingPrototype Clone();
    }

    public class MonkeyKing : MonkeyKingPrototype
    {
        public MonkeyKing(string id) : base(id) { }

        public override MonkeyKingPrototype Clone()
        {
            //深copy 和 浅copy
            return (MonkeyKingPrototype)this.MemberwiseClone();
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            MonkeyKing monkeyKing = new MonkeyKing("齐天大圣");

            MonkeyKingPrototype prototype1 = monkeyKing.Clone();

            MonkeyKingPrototype prototype2 = monkeyKing.Clone();

            Console.WriteLine("Hello World!");
        }
    }
}


posted on 2022-11-15 22:41  杏村牧童  阅读(10)  评论(0编辑  收藏  举报