public IPrototype DoDeepCopy() { ConcretePrototype clone = this.MemberwiseClone() as ConcretePrototype; clone.Name = new string(Name); return(clone); }
public override Prototype Clone() { ConcretePrototype concretePrototype = new ConcretePrototype(); concretePrototype.Attr = attr; Console.WriteLine("我被克隆了!!!"); return(concretePrototype); }
static void Main(string[] args) { var prototype = new ConcretePrototype(1000); for (int i = 1; i < 1000; i++) { ConcretePrototype tempotype = prototype.Clone() as ConcretePrototype; tempotype.X *= i; } }
static void Main(string[] args) { ConcretePrototype concrete1 = new ConcretePrototype("0"); Console.WriteLine(concrete1.Id); ConcretePrototype clone1 = (ConcretePrototype)concrete1.Clone(); Console.WriteLine(clone1.Id); Console.ReadLine(); }
static void Main(string[] args) { Console.WriteLine("Hello World!"); ConcretePrototype concretePrototype = new ConcretePrototype(); concretePrototype.Name = "Name"; concretePrototype.Value = 10; ConcretePrototype shallowCopy = concretePrototype.DoShallowCopy() as ConcretePrototype; ConcretePrototype deepCopy = concretePrototype.DoDeepCopy() as ConcretePrototype; }
static void Main(string[] args) { //母細胞(第一個細胞) CellPrototype cell = new ConcretePrototype("Mother"); //複製第一個 CellPrototype clone1 = cell.Clone(); Console.WriteLine("Cloned1:\t" + clone1.id); //複製第二個 CellPrototype clone2 = cell.Clone(); Console.WriteLine("Cloned2:\t" + clone2.id); Console.ReadLine(); }
static void Main(string[] args) { MonkeyKingPrototype prototypeMonkeyKing = new ConcretePrototype("MonkeyKing"); // 变一个 MonkeyKingPrototype cloneMonkeyKing = prototypeMonkeyKing.Clone() as ConcretePrototype; if (cloneMonkeyKing != null) { Console.WriteLine("Cloned1:\t" + cloneMonkeyKing.Id); } // 变两个 MonkeyKingPrototype cloneMonkeyKing2 = prototypeMonkeyKing.Clone() as ConcretePrototype; if (cloneMonkeyKing2 != null) { Console.WriteLine("Cloned2:\t" + cloneMonkeyKing2.Id); } Console.ReadLine(); }
static void Main(string[] args) { { ConcretePrototype no0 = new ConcretePrototype() { Number = 0, Person = new Person() { Age = 17, Name = "Vincent" } }; Console.WriteLine("第一次构造"); Console.WriteLine($"No0:Number:{no0.Number},Age:{no0.Person.Age},Name:{no0.Person.Name}"); Console.WriteLine("从No0浅克隆到No1"); ConcretePrototype no1 = (ConcretePrototype)no0.Clone(); Console.WriteLine("修改No1"); no1.Person.Age = 18; no1.Person.Name = "Vincent1"; Console.WriteLine($"No0:Number:{no0.Number},Age:{no0.Person.Age},Name:{no0.Person.Name}"); Console.WriteLine($"No1:Number:{no1.Number},Age:{no1.Person.Age},Name:{no1.Person.Name}"); Console.WriteLine("******************"); Console.WriteLine("从No0浅克隆到No2"); ConcretePrototype no2 = (ConcretePrototype)no0.DeepClone(); Console.WriteLine("修改No2"); no2.Person.Age = 19; no2.Person.Name = "Vincent2"; Console.WriteLine($"No0:Number:{no0.Number},Age:{no0.Person.Age},Name:{no0.Person.Name}"); Console.WriteLine($"No2:Number:{no2.Number},Age:{no2.Person.Age},Name:{no2.Person.Name}"); Console.WriteLine("******************"); } Console.WriteLine("————————————————————————————————————————"); { ConcretePrototype2 no0 = new ConcretePrototype2() { Number = 0, Person = new Person() { Age = 17, Name = "Vincent" } }; Console.WriteLine("第一次构造"); Console.WriteLine($"No0:Number:{no0.Number},Age:{no0.Person.Age},Name:{no0.Person.Name}"); Console.WriteLine("从No0浅克隆到No1"); ConcretePrototype2 no1 = (ConcretePrototype2)no0.Clone(); Console.WriteLine("修改No1"); no1.Person.Age = 18; no1.Person.Name = "Vincent1"; Console.WriteLine($"No0:Number:{no0.Number},Age:{no0.Person.Age},Name:{no0.Person.Name}"); Console.WriteLine($"No1:Number:{no1.Number},Age:{no1.Person.Age},Name:{no1.Person.Name}"); Console.WriteLine("******************"); Console.WriteLine("从No0浅克隆到No2"); ConcretePrototype2 no2 = no0.DeepClone <ConcretePrototype2>(); Console.WriteLine("修改No2"); no2.Person.Age = 19; no2.Person.Name = "Vincent2"; Console.WriteLine($"No0:Number:{no0.Number},Age:{no0.Person.Age},Name:{no0.Person.Name}"); Console.WriteLine($"No2:Number:{no2.Number},Age:{no2.Person.Age},Name:{no2.Person.Name}"); Console.WriteLine("******************"); } Console.ReadKey(); }
public override Prototype Clone() { var prototype = new ConcretePrototype(); prototype.ConcreteList = ConcreteList.ToList(); return prototype; }