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;
 }
Exemple #3
0
        static void Main(string[] args)
        {
            ConcretePrototypeA cpa1 = new ConcretePrototypeA("prototype");

            ConcretePrototypeA cpa2 = (ConcretePrototypeA)cpa1.Clone();

            Console.WriteLine("The Id of cpa2 is " + cpa1.id);
        }
Exemple #4
0
        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();
        }
Exemple #5
0
        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");
 }