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); }
/// <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}"); }