Example #1
0
        //一个具体工厂创建一个具体产品
        static void Main(string[] args)
        {
            FruitFactory factory;
            FruitProduct product;

            factory = new AppleFactory();
            product = factory.CreateFruit();
            Console.WriteLine("创建了一个{0},类型是{1}", product.GetProductName(), product.GetProductType());
            factory = new BananaFactory();
            product = factory.CreateFruit();
            Console.WriteLine("创建了一个{0},类型是{1}", product.GetProductName(), product.GetProductType());
            factory = new OrangeFactory();
            product = factory.CreateFruit();
            Console.WriteLine("创建了一个{0},类型是{1}", product.GetProductName(), product.GetProductType());

            Console.WriteLine();
            Console.WriteLine("通过配置及反射创建对象");
            string typename = ConfigurationManager.AppSettings["TargetType"];

            Console.WriteLine("取配置得到的类型是:{0}", typename);
            factory = (FruitFactory)Assembly.Load("FactoryMethod").CreateInstance(typename);
            product = factory.CreateFruit();
            Console.WriteLine("创建了一个{0},类型是{1}", product.GetProductName(), product.GetProductType());

            Console.WriteLine();
            Console.WriteLine("通过隐藏工厂方法调用产品方法:");
            var factoryex = new OrangeFactoryEx();

            Console.WriteLine("创建了一个{0},类型是{1}", factoryex.GetProductName(), factoryex.GetProductType());

            Console.ReadKey();
        }
Example #2
0
        static void Main(string[] args)
        {
            Console.WriteLine("ENTER TO CONTINUE TO NEXT PATTERN..\n1 = Factory Method\n2 = Singleton");
            List <Car> cars = new List <Car>();

            CarFactory factory = new CarFactory();

            cars.Add(factory.GetCar(CarType.Compact, "Peugotje", "Peugot"));
            cars.Add(factory.GetCar(CarType.Motorcycle, "Hondatje", "Honda"));
            cars.Add(factory.GetCar(CarType.Sports, "Lambotje", "Lambo"));

            foreach (Car c in cars)
            {
                Console.WriteLine(c);
                Console.WriteLine(c.Sound() + "\n");
            }
            Console.ReadLine();

            GameApplication appl = GameApplication.GetInstance();

            appl.Name = "Pakimon Go";
            Console.WriteLine(appl);
            //Using the default constructor doesn't work for the GameApplication class! Neither does inheriting from this class work.

            Console.ReadLine();
            AppleFactory appleFactory = new AppleFactory();

            Console.WriteLine(appleFactory.GetFood());
            BananaFactory bananaFactory = new BananaFactory();

            Console.WriteLine(bananaFactory.GetFood());

            Console.ReadLine();
        }