C# 设计模式——原型模式(Prototype)

468 阅读1分钟
        原型(Prototype)模式:以一个对象作为原型,对其进行克隆出多个和原型类似的新实例。
        原型模式其实就当对象初始化复杂需要很多配置。可以使用克隆解决。           
using System;

namespace CSspace
{
    public abstract class GoKu {
        // 想让例子更理解clone的简便,可以自己添加更多,属性和抽象、虚方法。
        public abstract GoKu clone();
    }

    public class Sunxinzhe : GoKu
    {
        public override GoKu clone()
        {
            Console.WriteLine("我乃花果山水帘洞美猴王特派取西经使者齐天大圣孙悟空的哥哥孙行者!");
            // 注意:memberwiseclone是浅copy;
            // 想实现深copy可以二进制序列化和反序列化实现。(不止这一种)
            return (GoKu)this.MemberwiseClone();
        }
    }

    public class Zhexinsun : GoKu
    {
        public override GoKu clone()
        {
            Console.WriteLine("我乃花果山水帘洞美猴王特派取西经使者齐天大圣孙悟空的弟弟者行孙!");
            return (GoKu)this.MemberwiseClone();
        }
    }

    public class Copy {

        public GoKu CopyMonkeyKing(GoKu sunwukong) {
    
            return sunwukong.clone();

        }
    
    }

    class Program
    {
        static void Main(string[] args)
        {
            GoKu monkeyKing = new Sunxinzhe();
            GoKu monkeyKing2 = new Zhexinsun();
            
            Copy copy = new Copy();
            GoKu monkey2 = copy.CopyMonkeyKing(monkeyKing);
            Console.WriteLine(monkeyKing == monkey2);
            GoKu monkey3 = copy.CopyMonkeyKing(monkeyKing2);

        }
    }

}