예제 #1
0
        public static void TestFactory()
        {
            Console.WriteLine("-- TEST FACTORY --");

            //Factory that creates all shapes but with different factory implementations
            Console.WriteLine("\nShapeFactory");
            IFactory factory  = new FactoryShape();
            IShape   square   = factory.CreateInstance("shapesquare", 5);
            IShape   triangle = factory.CreateInstance("shapetriangle", 5);

            Console.WriteLine(square.GetInfo());
            Console.WriteLine(triangle.GetInfo());

            Console.WriteLine("\nShapeDoubleSideFactory");
            IFactory doubleFactory  = new FactoryShapeDoubleSide();
            IShape   doubleSquare   = doubleFactory.CreateInstance("shapesquare", 5);
            IShape   doubleTriangle = doubleFactory.CreateInstance("shapetriangle", 5);

            Console.WriteLine(doubleSquare.GetInfo());
            Console.WriteLine(doubleTriangle.GetInfo());

            //Load a Factory to create a specific type of ICar
            ICarFactory bmwFactory  = FactoryLoader.GetCarFactory("FactoryBMW");
            ICarFactory miniFactory = FactoryLoader.GetCarFactory("FactoryMiniCooper");
            ICar        bmw         = bmwFactory.CreateInstance();
            ICar        mini        = miniFactory.CreateInstance();

            Console.WriteLine(bmw.TurnOn());
            Console.WriteLine(bmw.TurnOff());
            Console.WriteLine(mini.TurnOn());
            Console.WriteLine(mini.TurnOff());
        }
        static void Main(string[] args)
        {
            //CarFactory carFactory = new CarFactory();
            ICarFactory carFactory = LoadFactory();

            ICar[] cars =
            {
                carFactory.CreateInstance("Bus",      "275", "100", "1000"),
                carFactory.CreateInstance("Truck",    "100", "50",  "750"),
                carFactory.CreateInstance("Motobike", "75",  "150", "1250")
            };

            foreach (var item in cars)
            {
                Console.WriteLine($"Автомобиль: {item.GetType()}, {item}");
            }

            Console.ReadLine();
        }