public void StructuralTest()
        {
            ConcreteProtoType protoType = new ConcreteProtoType("I");
            ConcreteProtoType c1        = (ConcreteProtoType)protoType.Clone();

            Console.WriteLine("Cloned: {0}", c1.Id);

            ConcreteProtoType2 protoType2 = new ConcreteProtoType2("II");
            ConcreteProtoType2 c2         = (ConcreteProtoType2)protoType2.Clone();

            Console.WriteLine("Cloned: {0}", c2.Id);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 原型模式
        /// </summary>
        public static void ProtoTypePatternMethods()
        {
            var concreteType = new ConcreteProtoType("苹果A", new Tree
            {
                Name = "苹果树S"
            });

            ///注意:复杂类型,克隆的是引用,一个改变会跟随另一个改变
            ConcreteProtoType concreteType2 = (ConcreteProtoType)concreteType.Clone();

            concreteType2.Id = "苹果B";

            Console.WriteLine($"我是{concreteType.Id}我属于{concreteType.AllowTree.Name}");

            Console.WriteLine($"我是{concreteType2.Id}我属于{concreteType2.AllowTree.Name}");
        }