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) { 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) { 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(); }