private static void Main(string[] args)
        {
            Console.WriteLine("Lasagna Abstract Factory!");

            var store = new LasagnaStore();

            store.OrderLasagna("tomato");

            Console.WriteLine("Barbecue Lasagna!");
            store.OrderLasagna("barbecue");

            Console.WriteLine("Abstract Factory!");
            char input;

            do
            {
                Console.WriteLine("Choose a brand. (B)MW or (M)ercedes or (K)TM? Press E to (E)xit.");

                input = Console.ReadKey().KeyChar;

                VehicleFactory factory;

                switch (char.ToUpper(input))
                {
                case 'B':
                    factory = new BmwFactory();
                    break;

                case 'M':
                    factory = new MercedesFactory();
                    break;

                case 'K':
                    factory = new KtmFactory();
                    break;

                case 'E':
                    Environment.Exit(0);
                    return;

                default:
                    throw new NotImplementedException();
                }

                var car  = factory.CreateCar();
                var bike = factory.CreateBike();

                if (!car.IsNullable())
                {
                    Console.WriteLine($"\nCar: {car.GetType().Name}.");
                }

                if (!bike.IsNullable())
                {
                    Console.WriteLine($"\nBike: {bike.GetType().Name}.");
                }

                Console.ReadLine();
            }while (!input.Equals(char.ToUpper('e')));
        }
        static void Main(string[] args)
        {
            // Ниже показано, как вызвать метод Run с различными параметрами:
            // Абстрактная фабрика № 1
            CarFactory bmwCar = new BmwFactory();
            Client     c1     = new Client(bmwCar);

            c1.Run();
            // Абстрактная фабрика № 2
            CarFactory audiFactory = new AudiFactory();
            Client     c2          = new Client(audiFactory);

            c2.Run();
            Console.Read();

            // Чтобы получше разобраться с этим паттерном, рекомендую написать на его основе
            // несколько программ, приняв для примера условие, что фабрика связана с какими-то
            // бизнес-объектами.
        }