Example #1
0
        static void Main(string[] args)
        {
            Pizza pizza1 = new ItalianPizza();

            pizza1 = new TomatoPizza(pizza1); // итальянская пицца с томатами
            Console.WriteLine("Название: {0}", pizza1.Name);
            Console.WriteLine("Цена: {0}", pizza1.GetCost());

            Pizza pizza2 = new ItalianPizza();

            pizza2 = new CheesePizza(pizza2);// итальянская пиццы с сыром
            Console.WriteLine("Название: {0}", pizza2.Name);
            Console.WriteLine("Цена: {0}", pizza2.GetCost());

            Pizza pizza3 = new BulgerianPizza();

            pizza3 = new TomatoPizza(pizza3);
            pizza3 = new CheesePizza(pizza3);// болгарская пиццы с томатами и сыром
            Console.WriteLine("Название: {0}", pizza3.Name);
            Console.WriteLine("Цена: {0}", pizza3.GetCost());


            Pizza pizza4 = new BulgerianPizza();

            pizza4 = new SosigesPizza(pizza4);
            Console.WriteLine("Название: {0}", pizza4.Name);
            Console.WriteLine("Цена: {0}", pizza4.GetCost());


            Console.ReadLine();
        }
Example #2
0
        private static void ShowDecorator()
        {
            Console.WriteLine("================================================");
            Console.WriteLine("Pattern code (Decorator):");
            ConcreteComponent  c  = new ConcreteComponent();
            ConcreteDecoratorA d1 = new ConcreteDecoratorA();
            ConcreteDecoratorB d2 = new ConcreteDecoratorB();

            d1.SetComponent(c);
            d2.SetComponent(d1);

            d2.Operation();

            Console.WriteLine("\nReal code (Decorator):");

            Pizza pizza1 = new ItalianPizza();

            pizza1 = new TomatoPizza(pizza1); // итальянская пицца с томатами
            Console.WriteLine("Название: {0}", pizza1.Name);
            Console.WriteLine("Цена: {0}", pizza1.GetCost());

            Pizza pizza2 = new ItalianPizza();

            pizza2 = new CheesePizza(pizza2);// итальянская пиццы с сыром
            Console.WriteLine("Название: {0}", pizza2.Name);
            Console.WriteLine("Цена: {0}", pizza2.GetCost());

            Pizza pizza3 = new BulgerianPizza();

            pizza3 = new TomatoPizza(pizza3);
            pizza3 = new CheesePizza(pizza3);// болгарская пиццы с томатами и сыром
            Console.WriteLine("Название: {0}", pizza3.Name);
            Console.WriteLine("Цена: {0}", pizza3.GetCost());
        }
Example #3
0
        public void BulgerianPizzaIsNotModified()
        {
            Pizza  pizza           = new BulgerianPizza();
            string constNameResult = "Болгарская пицца";
            int    constCostResult = 8;
            string nameResult;
            int    costResult;

            nameResult = pizza.Name;
            costResult = pizza.GetCost();

            Assert.AreEqual(constNameResult, nameResult);
            Assert.AreEqual(constCostResult, costResult);
        }
Example #4
0
        public void CheesePizzaIsNotModified()
        {
            Pizza          pizza          = new BulgerianPizza();
            PizzaDecorator pizzaDecorator = new CheesePizza(pizza);

            string constNameResult = pizza.Name + ", с сыром";
            int    constCostResult = 8 + 5;
            string nameResult;
            int    costResult;

            nameResult = pizzaDecorator.Name;
            costResult = pizzaDecorator.GetCost();

            Assert.AreEqual(constNameResult, nameResult);
            Assert.AreEqual(constCostResult, costResult);
        }
Example #5
0
        static void Main(string[] args)
        {
            Pizza pizza1 = new ItalianPizza();

            pizza1 = new TomatoPizza(pizza1);
            Console.WriteLine($"Название {pizza1.Name}, Цена {pizza1.GetCost()}");

            Pizza pizza2 = new ItalianPizza();

            pizza2 = new CheesePizza(pizza2);
            Console.WriteLine($"Название {pizza2.Name}, Цена {pizza2.GetCost()}");

            Pizza pizza3 = new BulgerianPizza();

            pizza3 = new TomatoPizza(pizza3);
            pizza3 = new CheesePizza(pizza3);
            Console.WriteLine($"Название {pizza3.Name}, Цена {pizza3.GetCost()}");

            Console.ReadLine();
        }
Example #6
0
        public void OutPatternInfo()
        {
            Pizza pizza1 = new ItalianPizza();

            pizza1 = new TomatoPizza(pizza1); // итальянская пицца с томатами
            Console.WriteLine($"Название: {pizza1.Name}");
            Console.WriteLine($"Цена: {pizza1.GetCost()}");

            Pizza pizza2 = new ItalianPizza();

            pizza2 = new CheesePizza(pizza2);// итальянская пиццы с сыром
            Console.WriteLine($"Название: {pizza2.Name}");
            Console.WriteLine($"Цена: {pizza2.GetCost()}");

            Pizza pizza3 = new BulgerianPizza();

            pizza3 = new TomatoPizza(pizza3);
            pizza3 = new CheesePizza(pizza3);// болгарская пиццы с томатами и сыром
            Console.WriteLine($"Название: {pizza3.Name}");
            Console.WriteLine($"Цена: {pizza3.GetCost()}");
        }
Example #7
0
        public static void Display()
        {
            Pizza pizza1 = new ItalianPizza();

            pizza1 = new TomatoPizza(pizza1); // итальянская пицца с томатами
            Console.WriteLine("Название: {0}", pizza1.Name);
            Console.WriteLine("Цена: {0}", pizza1.GetCost());

            Pizza pizza2 = new ItalianPizza();

            pizza2 = new CheesePizza(pizza2);// итальянская пиццы с сыром
            Console.WriteLine("Название: {0}", pizza2.Name);
            Console.WriteLine("Цена: {0}", pizza2.GetCost());

            Pizza pizza3 = new BulgerianPizza();

            pizza3 = new TomatoPizza(pizza3);
            pizza3 = new CheesePizza(pizza3);// болгарская пиццы с томатами и сыром
            Console.WriteLine("Название: {0}", pizza3.Name);
            Console.WriteLine("Цена: {0}", pizza3.GetCost());
        }
        private void DecoratorStart(object sender, RoutedEventArgs e)
        {
            Pizza pizza1 = new ItalianPizza();

            pizza1 = new TomatoPizza(pizza1); // итальянская пицца с томатами
            MessageBox.Show($"Название: {pizza1.Name}");
            MessageBox.Show($"Цена: { pizza1.GetCost().ToString()}");

            Pizza pizza2 = new ItalianPizza();

            pizza2 = new CheesePizza(pizza2);// итальянская пиццы с сыром
            MessageBox.Show($"Название: {pizza2.Name}");
            MessageBox.Show($"Цена: {pizza2.GetCost().ToString()}");

            Pizza pizza3 = new BulgerianPizza();

            pizza3 = new TomatoPizza(pizza3);
            pizza3 = new CheesePizza(pizza3);// болгарская пиццы с томатами и сыром
            MessageBox.Show($"Название: {pizza3.Name}");
            MessageBox.Show($"Цена: {pizza3.GetCost().ToString()}");
        }
Example #9
0
    static void Main(string[] args)
    {
        Pizza pizza1 = new ItalianPizza();

        pizza1 = new TomatoPizza(pizza1); // italian pizza with tomatoes
        Console.WriteLine("Name: {0}", pizza1.Name);
        Console.WriteLine("Price: {0}", pizza1.GetCost());

        Pizza pizza2 = new ItalianPizza();

        pizza2 = new CheesePizza(pizza2); // italian pizza with cheese
        Console.WriteLine("Name: {0}", pizza2.Name);
        Console.WriteLine("Price: {0}", pizza2.GetCost());

        Pizza pizza3 = new BulgerianPizza();

        pizza3 = new TomatoPizza(pizza3);
        pizza3 = new CheesePizza(pizza3); // bulgerian pizza with tomatoes and cheese
        Console.WriteLine("Name: {0}", pizza3.Name);
        Console.WriteLine("Price: {0}", pizza3.GetCost());

        Console.ReadLine();
    }
Example #10
0
        static void Main(string[] args)
        {
            Console.OutputEncoding = Encoding.UTF8;

            Pizza pizza1 = new ItalianPizza();

            pizza1 = new TomatoPizza(pizza1); // итальянская пицца с томатами
            Console.WriteLine("Название: {0}", pizza1.Name);
            Console.WriteLine("Цена: {0}", pizza1.GetCost());

            Pizza pizza2 = new ItalianPizza();

            pizza2 = new CheesePizza(pizza2);// итальянская пиццы с сыром
            Console.WriteLine("Название: {0}", pizza2.Name);
            Console.WriteLine("Цена: {0}", pizza2.GetCost());

            Pizza pizza3 = new BulgerianPizza();

            pizza3 = new TomatoPizza(pizza3);
            pizza3 = new CheesePizza(pizza3);// болгарская пиццы с томатами и сыром
            Console.WriteLine("Название: {0}", pizza3.Name);
            Console.WriteLine("Цена: {0}", pizza3.GetCost());


            //CarFactory factory = new BmwFactory("BMW Factory");
            //Car car1 = factory.BuildCar("i3");
            //Car car2 = factory.BuildCar("m4");

            //factory = new ToyotaFactory("Toyota Factory");
            //Car car3 = factory.BuildCar("rav 4");
            //Car car4 = factory.BuildCar("corola");
            //Car car5 = factory.BuildCar("camry");

            //Console.WriteLine();
            //car2.Configuration();

            //Developer dev = new PanelDeveloper("OOO KirpichBuild");
            //House house = dev.CreateHouse();

            //dev = new WoodDeveloper("OOO DerevoBuild");
            //House house2 = dev.CreateHouse();


            //var newArgs2 = new NewsAggregator2();

            //var twitterWidget2 = new TwitterWidget2(newArgs2);
            //var lentaWidget2 = new LentaWidget2(newArgs2);
            //var tvWidget2 = new TvWidget2(newArgs2);

            //newArgs2.NotifyObserver();
            //Console.WriteLine();
            //newArgs2.NotifyObserver();

            //var newsAgr = new NewsAggregator();

            //var twitterWidget = new TwitterWidget(newsAgr);
            //var lentaWidget = new LentaWidget(newsAgr);
            //var tvWidget = new TvWidget(newsAgr);

            //newsAgr.NotifyObserver();
            //Console.WriteLine();
            //newsAgr.NotifyObserver();


            //Stock stock = new Stock();
            //Bank bank = new Bank("ЮнитБанк", stock);
            //Broker broker = new Broker("Иван Иваныч", stock);
            //// имитация торгов
            //stock.Market();
            //// брокер прекращает наблюдать за торгами
            //broker.StopTrade();
            //// имитация торгов
            //stock.Market();


            //(new Thread(() =>
            //{
            //    Computer comp = new Computer();
            //    comp.Lounch("windos 10");
            //    Console.WriteLine(comp.OS.Name);
            //})
            //).Start();

            //Computer comp = new Computer();
            //comp.Lounch("windos 10");
            //Console.WriteLine(comp.OS.Name);

            //comp.OS = OS.getInstance("linux");
            //Console.WriteLine(comp.OS.Name);



            //Photograph photograph = new Photograph();
            //Camera camera = new Camera();
            //Models.InterfaceSegregation.Phone.Phone iphone = new Models.InterfaceSegregation.Phone.Phone();
            //photograph.TakePhoto(iphone);
            //photograph.TakePhoto(camera);


            //Rectangle r = new Square();
            //Console.WriteLine(TestRectangleArea(r));

            //Education school = new University();
            //school.Learn();

            //var concreteClass = new ConcreteClass();
            //concreteClass.TemplateMethod();

            //var contex = new Context(new ContextStrategy2());
            //contex.ExecuteAlgorihtm();

            //--------------------------------
            //MealBase[] menu = new MealBase[] {
            //    new PotatoMeal(),
            //    new SaladMeal()
            //};
            //Cook bob = new Cook("bob");
            //bob.MakeDinner(menu);

            //Cook cook = new Cook("Bob");
            //cook.MakeDinner(new PotatoMeal());
            //Console.WriteLine();
            //cook.MakeDinner(new SaladMeal());


            //------------------------------
            //IPhoneReader reader = new ConsolePhoneReader();
            //IPhoneBinder binder = new GeneralPhoneBinder();
            //IPhoneValidator validator = new GeneralPhoneValidator();
            //IPhoneSaver saver = new TextFileSaver();
            //MobileStore store = new MobileStore(reader, binder, validator, saver);
            //store.Process();

            //IPrint print = new ConsolePrinter();
            //var report = new Report();
            //report.Text = "Hello Report";
            //report.Print(print);


            Console.ReadKey();
        }
Example #11
0
        static void Main(string[] args)
        {
            void strategy()
            {
                //Создаем контекст и инициализируем его первой стратегией
                Context context = new Context(new ConcreteStrategy1());

                //Выполняем операцию (алгоритм) первой стратегии
                context.ExecuteOperation();
                //Заменяем в context первую стратегию на вторую
                context.SetStrategy(new ConcreteStrategy2());
                //Выполняем операцию (алгоритм) теперь уже второй стратегии
                context.ExecuteOperation();
                Console.ReadKey();
            }

            void Decorator()
            {
                Pizza pizza1 = new ItalianPizza();

                pizza1 = new TomatoPizza(pizza1); // итальянская пицца с томатами
                Console.WriteLine("Название: {0}", pizza1.Name);
                Console.WriteLine("Цена: {0}", pizza1.GetCost());

                Pizza pizza2 = new ItalianPizza();

                pizza2 = new CheesePizza(pizza2);// итальянская пиццы с сыром
                Console.WriteLine("Название: {0}", pizza2.Name);
                Console.WriteLine("Цена: {0}", pizza2.GetCost());

                Pizza pizza3 = new BulgerianPizza();

                pizza3 = new TomatoPizza(pizza3);
                pizza3 = new CheesePizza(pizza3);// болгарская пиццы с томатами и сыром
                Console.WriteLine("Название: {0}", pizza3.Name);
                Console.WriteLine("Цена: {0}", pizza3.GetCost());

                Console.ReadLine();
            }

            void Visitor()
            {
                List <Auto> collection = new List <Auto>();

                collection.Add(new Car {
                    ModelTitle = "ВАЗ"
                });
                collection.Add(new Track {
                    ModelTitle = "ГАЗель"
                });
                collection.Add(new Car {
                    ModelTitle = "Merсedes"
                });
                collection.Add(new Track {
                    ModelTitle = "КамАЗ"
                });
                IVisitor visitor = new AutoVisitor();

                foreach (Auto a in collection)
                {
                    a.Accept(visitor);
                }
                Console.ReadKey();
            }

            Decorator();
            strategy();
            Visitor();
        }
Example #12
0
        static void Main(string[] args)
        {
            #region Creational
            //-Factory Method-
            Developer dev    = new PanelDeveloper("ООО КирпичСтрой");
            House     house2 = dev.Create();
            dev = new WoodDeveloper("Частный застройщик");
            House house = dev.Create();

            //-Abstract Factory-
            GofPatterns.Creational.Hero elf = new GofPatterns.Creational.Hero(new ElfFactory());
            elf.Hit();
            elf.Run();
            GofPatterns.Creational.Hero voin = new GofPatterns.Creational.Hero(new VoinFactory());
            voin.Hit();
            voin.Run();

            //-Singleton-
            Computer comp = new Computer();
            comp.Launch("Windows 8.1");
            Console.WriteLine(comp.OS.Name);

            // у нас не получится изменить ОС, так как объект уже создан
            comp.OS = OS.getInstance("Windows 10");

            //-Prototype-
            IFigure figure       = new Rectangle(30, 40);
            IFigure clonedFigure = figure.Clone();
            figure.GetInfo();
            clonedFigure.GetInfo();

            figure       = new Circle(30);
            clonedFigure = figure.Clone();
            figure.GetInfo();
            clonedFigure.GetInfo();

            //-Builder-
            // содаем объект пекаря
            Baker baker = new Baker();
            // создаем билдер для ржаного хлеба
            BreadBuilder builder = new RyeBreadBuilder();
            // выпекаем
            Bread ryeBread = baker.Bake(builder);
            Console.WriteLine(ryeBread.ToString());
            // оздаем билдер для пшеничного хлеба
            builder = new WheatBreadBuilder();
            Bread wheatBread = baker.Bake(builder);
            Console.WriteLine(wheatBread.ToString());
            #endregion

            #region Behavioral
            //-Strategy-
            Car auto = new Car(4, "Volvo", new PetrolMove());
            auto.Move();
            auto.Movable = new ElectricMove();
            auto.Move();


            //-Observer-
            Stock  stock  = new Stock();
            Bank   bank   = new Bank("ЮнитБанк", stock);
            Broker broker = new Broker("Иван Иваныч", stock);
            // имитация торгов
            stock.Market();
            // брокер прекращает наблюдать за торгами
            broker.StopTrade();
            // имитация торгов
            stock.Market();


            //-Strategy-
            Pult pult = new Pult();
            TV   tv   = new TV();
            pult.SetCommand(new TVOnCommand(tv));
            pult.PressButton();
            pult.PressUndo();

            Microwave microwave = new Microwave();
            // 5000 - время нагрева пищи
            pult.SetCommand(new MicrowaveCommand(microwave, 5000));
            pult.PressButton();


            //-Iterator-
            Library library = new Library();
            Reader  reader  = new Reader();
            reader.SeeBooks(library);


            //-State-
            Water water = new Water(new LiquidWaterState());
            water.Heat();
            water.Frost();
            water.Frost();


            //-ChainOfResponsibility-
            Handler h1 = new ConcreteHandler1();
            Handler h2 = new ConcreteHandler2();
            h1.Successor = h2;
            h1.HandleRequest(2);


            //-Interpreter-
            Context context = new Context();
            // определяем набор переменных
            int x = 5;
            int y = 8;
            int z = 2;
            // добавляем переменные в контекст
            context.SetVariable("x", x);
            context.SetVariable("y", y);
            context.SetVariable("z", z);
            // создаем объект для вычисления выражения x + y - z
            IExpression expression = new SubtractExpression(
                new AddExpression(
                    new NumberExpression("x"), new NumberExpression("y")
                    ),
                new NumberExpression("z")
                );
            int result = expression.Interpret(context);
            Console.WriteLine("результат: {0}", result);


            //-Mediator-
            ManagerMediator mediator   = new ManagerMediator();
            Colleague       customer   = new CustomerColleague(mediator);
            Colleague       programmer = new ProgrammerColleague(mediator);
            Colleague       tester     = new TesterColleague(mediator);
            mediator.Customer   = customer;
            mediator.Programmer = programmer;
            mediator.Tester     = tester;
            customer.Send("Есть заказ, надо сделать программу");
            programmer.Send("Программа готова, надо протестировать");
            tester.Send("Программа протестирована и готова к продаже");


            //-Memento-
            GofPatterns.Behavioral.Hero hero = new GofPatterns.Behavioral.Hero();
            hero.Shoot();                        // делаем выстрел, осталось 9 патронов
            GameHistory game = new GameHistory();
            game.History.Push(hero.SaveState()); // сохраняем игру
            hero.Shoot();                        //делаем выстрел, осталось 8 патронов
            hero.RestoreState(game.History.Pop());
            hero.Shoot();                        //делаем выстрел, осталось 8 патронов


            //-Visitor-
            var structure = new Bank1();
            structure.Add(new Person {
                Name = "Иван Алексеев", Number = "82184931"
            });
            structure.Add(new Company {
                Name = "Microsoft", RegNumber = "ewuir32141324", Number = "3424131445"
            });
            structure.Accept(new HtmlVisitor());
            structure.Accept(new XmlVisitor());
            #endregion

            #region Structural
            //-Decorator-
            Pizza pizza1 = new ItalianPizza();
            pizza1 = new TomatoPizza(pizza1); // итальянская пицца с томатами
            Console.WriteLine("Название: {0}", pizza1.Name);
            Console.WriteLine("Цена: {0}", pizza1.GetCost());

            Pizza pizza2 = new ItalianPizza();
            pizza2 = new CheesePizza(pizza2);// итальянская пиццы с сыром
            Console.WriteLine("Название: {0}", pizza2.Name);
            Console.WriteLine("Цена: {0}", pizza2.GetCost());

            Pizza pizza3 = new BulgerianPizza();
            pizza3 = new TomatoPizza(pizza3);
            pizza3 = new CheesePizza(pizza3);// болгарская пиццы с томатами и сыром
            Console.WriteLine("Название: {0}", pizza3.Name);
            Console.WriteLine("Цена: {0}", pizza3.GetCost());


            //-Adapter-
            // путешественник
            Driver driver = new Driver();
            // машина
            Auto auto1 = new Auto();
            // отправляемся в путешествие
            driver.Travel(auto1);
            // встретились пески, надо использовать верблюда
            Camel camel = new Camel();
            // используем адаптер
            ITransport camelTransport = new CamelToTransportAdapter(camel);
            // продолжаем путь по пескам пустыни
            driver.Travel(camelTransport);


            //-Facade-
            TextEditor         textEditor  = new TextEditor();
            Compiller          compiller   = new Compiller();
            CLR                clr         = new CLR();
            VisualStudioFacade ide         = new VisualStudioFacade(textEditor, compiller, clr);
            Programmer         programmer1 = new Programmer();
            programmer1.CreateApplication(ide);


            //-Composite-
            Component fileSystem = new Directory("Файловая система");
            // определяем новый диск
            Component diskC = new Directory("Диск С");
            // новые файлы
            Component pngFile  = new File("12345.png");
            Component docxFile = new File("Document.docx");
            // добавляем файлы на диск С
            diskC.Add(pngFile);
            diskC.Add(docxFile);
            // добавляем диск С в файловую систему
            fileSystem.Add(diskC);
            // выводим все данные
            fileSystem.Print();
            Console.WriteLine();
            // удаляем с диска С файл
            diskC.Remove(pngFile);
            // создаем новую папку
            Component docsFolder = new Directory("Мои Документы");
            // добавляем в нее файлы
            Component txtFile = new File("readme.txt");
            Component csFile  = new File("Program.cs");
            docsFolder.Add(txtFile);
            docsFolder.Add(csFile);
            diskC.Add(docsFolder);
            fileSystem.Print();


            //-Proxy-
            using (IBook book = new BookStoreProxy())
            {
                // читаем первую страницу
                Page page1 = book.GetPage(1);
                Console.WriteLine(page1.Text);
                // читаем вторую страницу
                Page page2 = book.GetPage(2);
                Console.WriteLine(page2.Text);
                // возвращаемся на первую страницу
                page1 = book.GetPage(1);
                Console.WriteLine(page1.Text);
            }


            //-Bridge-
            // создаем нового программиста, он работает с с++
            Programmer1 freelancer = new FreelanceProgrammer(new CPPLanguage());
            freelancer.DoWork();
            freelancer.EarnMoney();
            // пришел новый заказ, но теперь нужен c#
            freelancer.Language = new CSharpLanguage();
            freelancer.DoWork();
            freelancer.EarnMoney();


            //-Flyweight-
            double longitude = 37.61;
            double latitude  = 55.74;

            HouseFactory houseFactory = new HouseFactory();
            for (int i = 0; i < 5; i++)
            {
                House1 panelHouse = houseFactory.GetHouse("Panel");
                if (panelHouse != null)
                {
                    panelHouse.Build(longitude, latitude);
                }
                longitude += 0.1;
                latitude  += 0.1;
            }

            for (int i = 0; i < 5; i++)
            {
                House1 brickHouse = houseFactory.GetHouse("Brick");
                if (brickHouse != null)
                {
                    brickHouse.Build(longitude, latitude);
                }
                longitude += 0.1;
                latitude  += 0.1;
            }
            #endregion
        }