상속: IAbstractFactory
예제 #1
0
        static void Main()
        {
            /*
             * Structural
             */

            StructuralAbstractFactory factory1 = new ConcreteFactory1();
            Client client1 = new Client(factory1);

            client1.Run();

            StructuralAbstractFactory factory2 = new ConcreteFactory2();
            Client client2 = new Client(factory2);

            client2.Run();

            /*
             * Real World
             */

            AfricaFactory africa = new AfricaFactory();
            AnimalWorld   world  = new AnimalWorld(africa);

            world.RunFoodChain();

            RealWorldAbstractFactory america = new AmericaFactory();

            world = new AnimalWorld(america);
            world.RunFoodChain();
        }
예제 #2
0
        static void Main(string[] args)
        {
            //// Abstract factory #1
            //AbstractFactory factory1 = new ConcreteFactory1();
            //Client client1 = new Client(factory1);
            //client1.Run();

            //// Abstract factory #2
            //AbstractFactory factory2 = new ConcreteFactory2();
            //Client client2 = new Client(factory2);
            //client2.Run();

            AbstractFactory[] factories = new AbstractFactory[2];

            factories[0] = new ConcreteFactory1();
            factories[1] = new ConcreteFactory2();

            foreach (AbstractFactory factory in factories)
            {
                Client client = new Client(factory);
                client.Run();
            }

            // Wait for user input
            Console.ReadKey();
        }
예제 #3
0
        static void Main()
        {
            AbstractFactory factory1 = new ConcreteFactory1();
            var             client1  = new Client(factory1);

            client1.Run();

            AbstractFactory factory2 = new ConcreteFactory2();
            var             client2  = new Client(factory2);

            client2.Run();
        }
        static void Main(string[] args)
        {
            IAbstractFactory factory1 = new ConcreteFactory1();
            Client client1 = new Client(factory1);
            client1.Launch();

            IAbstractFactory factory2 = new ConcreteFactory2();
            Client client2 = new Client(factory2);
            client2.Launch();

            Console.Read();
        }
예제 #5
0
        static void Main(string[] args)
        {
            AbstractFactory factory1 = new ConcreteFactory1();
            Client          client1  = new Client(factory1);

            client1.Run();
            AbstractFactory factory2 = new ConcreteFactory2();
            Client          client2  = new Client(factory2);

            client2.Run();
            Console.ReadKey();
        }
예제 #6
0
        public void Main(string[] args)
        {
            AbstractFactory factory1 = new ConcreteFactory1();
            Client client1 = new Client(factory1);
            client1.Run();

            AbstractFactory factory2 = new ConcreteFactory2();
            Client client2 = new Client(factory2);
            client2.Run();

            Console.Read();
        }
예제 #7
0
        /// <summary>
        /// Entry point into console application.
        /// </summary>
        public static void Main()
        {
            // Abstract factory #1
            AbstractFactory factory1 = new ConcreteFactory1();
            Client client1 = new Client(factory1);
            client1.Run();

            // Abstract factory #2
            AbstractFactory factory2 = new ConcreteFactory2();
            Client client2 = new Client(factory2);
            client2.Run();
        }
예제 #8
0
        static void Main(string[] args)
        {
            var factory1 = new ConcreteFactory1();
            var factory2 = new ConcreteFactory2();

            factory1.CreateProductA();
            factory1.CreateProductB();

            factory2.CreateProductA();
            factory2.CreateProductB();

            //factory만 교체하면 생성하는 제품군을 변경할 수 있습니다.
        }
예제 #9
0
        public static void EX1()
        {
            AbstractFactory.Exemplo1.AbstractFactory factory = new ConcreteFactory1();

            AbstractFamily1 obj1 = factory.CreateObjetFamily1();

            obj1.Details();

            factory.CreateObjetFamily2().Details();

            factory = new ConcreteFactory2();
            factory.CreateObjetFamily1().Details();
            factory.CreateObjetFamily2().Details();
        }
예제 #10
0
파일: Program.cs 프로젝트: dhija/Telerik
        /// <summary>
        /// Entry point into console application.
        /// </summary>
        public static void Main()
        {
            // Abstract factory #1
            AbstractFactory factory1 = new ConcreteFactory1();
            Client          client1  = new Client(factory1);

            client1.Run();

            // Abstract factory #2
            AbstractFactory factory2 = new ConcreteFactory2();
            Client          client2  = new Client(factory2);

            client2.Run();
        }
예제 #11
0
        static void Main(string[] args)
        {
            AbstractFactory factory1 = new ConcreteFactory1();
            Client          client1  = new Client(factory1);

            client1.Run();

            AbstractFactory factory2 = new ConcreteFactory2();
            Client          client2  = new Client(factory2);

            client2.Run();

            Console.WriteLine("Hello World!");
        }
예제 #12
0
        /// <summary>
        /// Entry point into console application.
        /// </summary>
        public static void Main()
        {
            // Abstract factory #1
            AbstractFactory factory1 = new ConcreteFactory1();
            Client client1 = new Client(factory1);
            client1.Run();

            // Abstract factory #2
            AbstractFactory factory2 = new ConcreteFactory2();
            Client client2 = new Client(factory2);
            client2.Run();

            // Wait for user input
            Console.ReadKey();
        }
예제 #13
0
        static void Main(string[] args)
        {
            AbstractFactory  af  = new ConcreteFactory1();
            AbstractProductA apA = af.CreateProductA();
            AbstractProductB apB = af.CreateProductB();

            apA.Show();
            apB.Show();

            af  = new ConcreteFactory2();
            apA = af.CreateProductA();
            apB = af.CreateProductB();
            apA.Show();
            apB.Show();
        }
예제 #14
0
        static void Main(string[] args)
        {
            AbstractFactory factory;
            AbstractProduct productA;
            AbstractProduct productB;

            factory  = new ConcreteFactory1();
            productA = factory.CreateProductA();
            productB = factory.CreateProductB();

            factory  = new ConcreteFactory2();
            productA = factory.CreateProductA();
            productB = factory.CreateProductB();

            Console.ReadKey();
        }
예제 #15
0
        static void Main(string[] args)
        {
            AbstractFactory factory1 = new ConcreteFactory1();
            Client          client1  = new Client(factory1);

            client1.Run();

            // Abstract factory #2
            AbstractFactory factory2 = new ConcreteFactory2();
            Client          client2  = new Client(factory2);

            client2.Run();

            // Wait for user input
            Console.ReadKey();
        }
예제 #16
0
        /// <summary>
        /// Entry point into console application.
        /// </summary>
        public static void Main()
        {
            // Abstract factory #1
            GangOfFour.Creational.AbstractFactory factory1 = new ConcreteFactory1();
            Client client1 = new Client(factory1);

            client1.Run();

            // Abstract factory #2
            GangOfFour.Creational.AbstractFactory factory2 = new ConcreteFactory2();
            Client client2 = new Client(factory2);

            client2.Run();

            // Wait for user input
            Console.ReadKey();
        }
예제 #17
0
        private static void Main()
        {
            // Abstract factory #1
            var factory1 = new ConcreteFactory1();
            var client1  = new Client(factory1);

            client1.Run();

            // Abstract factory #2
            var factory2 = new ConcreteFactory2();
            var client2  = new Client(factory2);

            client2.Run();

            // Wait for user input
            Console.ReadKey();
        }
        /// <summary>
        /// The test first.
        /// </summary>
        private static void TestFirst()
        {
            // Abstract factory #1
            AbstractFactory factory1 = new ConcreteFactory1();
            Client          client1  = new Client(factory1);

            client1.Run();

            // Abstract factory #2
            AbstractFactory factory2 = new ConcreteFactory2();
            Client          client2  = new Client(factory2);

            client2.Run();

            // Wait for user input
            Console.ReadKey();
        }
        public static void Run()
        {
            Console.WriteLine("This structural code demonstrates the Abstract Factory pattern creating parallel hierarchies of objects. Object creation has been abstracted and there is no need for hard-coded class names in the client code.");
            AbstractFactory factory1 = new ConcreteFactory1();
            Client          client1  = new Client(factory1);

            client1.Run();

            AbstractFactory factory2 = new ConcreteFactory2();
            Client          client2  = new Client(factory2);

            client2.Run();

            /*
             * ProductB1 interacts with ProductA1
             * ProductB2 interacts with ProductA2
             */
        }
예제 #20
0
        static void Main1(string[] args)
        {
            //抽像工廠用途主要是提供一個介面創建一個相關的物件但不指定具體的類別
            //宣告一個抽象工廠變數用來接實作專門產出產品1的產線1
            AbstractFactory factory1 = new ConcreteFactory1();
            //弄一個使用者
            Client client1 = new Client(factory1);

            client1.Run();

            //宣告一個抽象工廠變數用來接實作專門產出產品2的產線2
            AbstractFactory factory2 = new ConcreteFactory2();
            //弄一個使用者
            Client client2 = new Client(factory2);

            client2.Run();

            Console.ReadKey();
        }
예제 #21
0
        static void Main(string[] args)
        {
            var factory1 = new ConcreteFactory1();
            var client   = new Client();

            client.SetFactory(factory1);
            client.Run();

            Console.WriteLine();

            var factory2 = new ConcreteFactory2();

            client.SetFactory(factory2);
            client.Run();



            Console.ReadKey();
        }
        static void Main(string[] args)
        {
            Console.WriteLine("Use Products from Factory 1");
            IAbstractFactory factory   = new ConcreteFactory1();
            IProductA        productA1 = factory.GetProductA();
            IProductB        productB1 = factory.GetProductB();

            productA1.MethodX(); productA1.MethodY();
            productB1.Method1(); productB1.Method2();

            Console.WriteLine("Use Products from Factory 2");
            factory = new ConcreteFactory2();
            IProductA productA2 = factory.GetProductA();
            IProductB productB2 = factory.GetProductB();

            productA2.MethodX(); productA2.MethodY();
            productB2.Method1(); productB2.Method2();

            Console.ReadLine();
        }
예제 #23
0
        static void Main(string[] args)
        {
            // Abstract factory #1

            // Using fully qualified name here. But replace with proper namespace
            AbstractFactory.Pattern.AbstractFactory factory1 = new ConcreteFactory1();
            Client client1 = new Client(factory1);

            client1.Run();

            // Abstract factory #2

            AbstractFactory.Pattern.AbstractFactory factory2 = new ConcreteFactory2();
            Client client2 = new Client(factory2);

            client2.Run();

            // Wait for user input

            Console.ReadKey();
        }
예제 #24
0
        private static void Main(string[] args)
        {
            #region 结构实现
            // Abstract factory #1
            Structural.AbstractFactory factory1 = new ConcreteFactory1();
            Client client1 = new Client(factory1);
            client1.Run();

            // Abstract factory #2
            Structural.AbstractFactory factory2 = new ConcreteFactory2();
            Client client2 = new Client(factory2);
            client2.Run();
            #endregion

            Console.WriteLine("******************************");

            #region 实践应用
            //实惠套餐
            IKFCFactory factory = new CheapPackageFactory();
            KFCFood     food    = factory.CreateFood();
            KFCDrink    drink   = factory.CreateDrink();
            Console.WriteLine("实惠套餐:");
            food.Display();
            drink.Display();

            //豪华套餐
            factory = new LuxuryPackageFactory();
            food    = factory.CreateFood();
            drink   = factory.CreateDrink();
            Console.WriteLine("豪华套餐:");
            food.Display();
            drink.Display();
            #endregion

            Console.ReadKey();
        }
예제 #25
0
        static void Main()
        {
            AbstractFactory factory1 = new ConcreteFactory1();
            var client1 = new Client(factory1);
            client1.Run();

            AbstractFactory factory2 = new ConcreteFactory2();
            var client2 = new Client(factory2);
            client2.Run();
        }