예제 #1
0
        static void Main(string[] args)
        {
            Prototype prototype = new ConcretePrototype("yepeng");

            Prototype clone = prototype.Clone() as ConcretePrototype;

            Prototype clone2 = prototype.Clone() as ConcretePrototype;

            Console.WriteLine($"clone1:{clone.Id},clone2:{clone2.Id}");
            Console.ReadKey();
        }
예제 #2
0
        static void Main()
        {
            // 孙悟空原型
            MonkeyKingPrototype monkeyKingPrototype = new ConcretePrototype("MonkeyKing");

            // 变一个
            MonkeyKingPrototype cloneMonkeyKing1 = monkeyKingPrototype.Clone() as ConcretePrototype;

            // 变两个
            MonkeyKingPrototype cloneMonkeyKing2 = monkeyKingPrototype.Clone() as ConcretePrototype;
        }
예제 #3
0
        static void Main(string[] args)
        {
            var abstractPrototype = new ConcretePrototype(System.Guid.NewGuid().ToString());
            var cloneType         = abstractPrototype.Clone() as ConcretePrototype;

            Console.WriteLine("Cloned1:\t" + cloneType.Id);


            var cloneType2 = abstractPrototype.Clone() as ConcretePrototype;

            Console.WriteLine("Cloned2:\t" + cloneType.Id);

            Console.Read();
        }
예제 #4
0
        static void Main()
        {
            ConcretePrototype prototype = new ConcretePrototype("1");
            ConcretePrototype clone     = (ConcretePrototype)prototype.Clone();

            Console.WriteLine("Cloned: {0}", clone.Id);
        }
예제 #5
0
        static void Main(string[] args)
        {
            Prototype prototype = new ConcretePrototype(1);
            Prototype clone     = prototype.Clone();

            System.Console.WriteLine(prototype.Id + " proto");
            System.Console.WriteLine(clone.Id + " Clone");
        }
예제 #6
0
        static void Main(string[] args)
        {
            var state     = new ReferenceType(1, "Some string");
            var prototype = new ConcretePrototype(state);
            var clone     = prototype.Clone();

            var dotNetPrototype = new DotNetPrototype(state);
            var dotNetClone     = dotNetPrototype.Clone();
        }
예제 #7
0
        static void Main(string[] args)
        {
            ConcretePrototype p1 = new ConcretePrototype("I");
            ConcretePrototype c1 = (ConcretePrototype)p1.Clone();

            Console.WriteLine("Cloned: {0}", c1.Id);

            ConcretePrototype1 p2 = new ConcretePrototype1("II");
            ConcretePrototype1 c2 = (ConcretePrototype1)p2.Clone();

            Console.WriteLine("Cloned: {0}", c2.Id);

            // Wait for user
            Console.ReadKey();
        }
예제 #8
0
        static void Main(string[] args)
        {
            //.Net에서는 ICloneable interface를 이용해서 Prototype 패턴을 구현합니다.
            var prototype  = new ConcretePrototype();
            var prototype2 = new ConcretePrototype(prototype);
            var clone      = prototype.Clone();

            prototype.print();
            prototype2.print();

            //가장 상위의 Prototype class에는 print() 메소드가 없습니다.
            Console.WriteLine($"Clone Value: {clone.Value}");


            //Composite 패턴과 Decorator 패턴을 결합해서 사용하면 좋습니다.
        }
예제 #9
0
 static void Main()
 {
     ConcretePrototype prototype = new ConcretePrototype("1");
     ConcretePrototype clone = (ConcretePrototype)prototype.Clone();
     Console.WriteLine("Cloned: {0}", clone.Id);
 }
예제 #10
0
 static void Main(string[] args)
 {
     PrototypeClass prototype       = new ConcretePrototype("X-One");
     PrototypeClass clonedPrototype = prototype.Clone();
 }