static void Main(string[] args) { // Простое создание клона вручную Prototype prototypeA = new ConcretePrototypeA("Prototype A"); Prototype clone1 = prototypeA.Clone(); Console.WriteLine(prototypeA.Name); Console.WriteLine(clone1.Name); // Продвинутое создание клона, так же с клонированием ссылочных типов Dependency dependency = new Dependency("Dependency A1"); CloneablePrototypeAdvanced cloneablePrototype = new CloneablePrototypeAdvanced("Clone", dependency); CloneablePrototypeAdvanced clone2 = cloneablePrototype.Clone() as CloneablePrototypeAdvanced; // Убедимся, что после клонирования, при изменении dependency, ссылочный тип клона не изменится dependency.SetText("Dependency A2"); Console.WriteLine(cloneablePrototype.GetDependencyText()); Console.WriteLine(clone2.GetDependencyText()); // Реализация через фабрику ConcretePrototypeN prototypeN = PrototypeFactory.CreatePrototypeN(); Prototype clone3 = prototypeN.Clone(); Console.WriteLine(prototypeN.Name); Console.WriteLine(clone3.Name); Console.ReadLine(); }
static void Main(string[] args) { var originalA = new ConcretePrototypeA(); var originalB = new ConcretePrototypeB(); var cloneA = originalA.Clone() as ConcretePrototypeA; var cloneB = originalB.Clone() as ConcretePrototypeB; }
static void Main(string[] args) { ConcretePrototypeA cpa1 = new ConcretePrototypeA("prototype"); ConcretePrototypeA cpa2 = (ConcretePrototypeA)cpa1.Clone(); Console.WriteLine("The Id of cpa2 is " + cpa1.id); }
static void Main(string[] args) { Prototype prototype = null; Prototype clone = null; prototype = new ConcretePrototypeA(1); clone = prototype.Clone(); prototype = new ConcretePrototypeB(2); clone = prototype.Clone(); Console.ReadLine(); }
private static void Main() { var concretePrototypeA1 = new ConcretePrototypeA("ConcretePrototypeA"); var concretePrototypeA2 = (ConcretePrototypeA)concretePrototypeA1.Clone(); Console.WriteLine($"Clone: {concretePrototypeA2.Name}"); var concretePrototypeB1 = new ConcretePrototypeB("ConcretePrototypeB"); var concretePrototypeB2 = (ConcretePrototypeB)concretePrototypeB1.Clone(); Console.WriteLine($"Clone: {concretePrototypeB2.Name}"); Console.ReadKey(); }
static PrototypeFactory() { _concretePrototypeA = new ConcretePrototypeA("Prototype A"); _concretePrototypeB = new ConcretePrototypeB("Prototype B"); _concretePrototypeN = new ConcretePrototypeN("Prototype N"); }