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(); }