static void Main(string[] args)
        {
            var auto1 = new AutoConrete1(1, 15, 8);
            var auto2 = ObjectCopier.Clone <Auto>(auto1);//var auto2 = auto1.Clone();

            auto1.MaxSpeed = 100;

            Console.WriteLine("-- Игрушки --");
            Console.WriteLine("-- auto1 --");
            foreach (FieldInfo field in  typeof(Auto).GetFields(BindingFlags.NonPublic | BindingFlags.Instance))
            {
                Console.WriteLine(field.Name + " " + field.GetValue(auto1));
            }

            Console.WriteLine("-- auto2 --");
            foreach (FieldInfo field in typeof(Auto).GetFields(BindingFlags.NonPublic | BindingFlags.Instance))
            {
                Console.WriteLine(field.Name + " " + field.GetValue(auto2));
            }

            Console.WriteLine("-- Figures --");
            IFigure figure       = new Rectangle(20, 20, 30, 40);
            IFigure clonedFigure = figure.Clone();

            figure.GetInfo();
            clonedFigure.GetInfo();

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

            Console.Read();
        }
Exemplo n.º 2
0
        static void Main(string[] args)
        {
            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();
        }
Exemplo n.º 3
0
        //prototype
        private void Button_Click_3(object sender, RoutedEventArgs e)
        {
            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();
        }
Exemplo n.º 4
0
        public void Run()
        {
            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();
        }
Exemplo n.º 5
0
        public void Run()
        {
            IFigure figure    = new Rectangle(22, 44);
            IFigure clonedFif = figure.Clone();

            figure.GetInfo();
            clonedFif.GetInfo();

            figure    = new Circle(4122);
            clonedFif = figure.Clone();
            figure.GetInfo();
            clonedFif.GetInfo();
        }
Exemplo n.º 6
0
        static void Main(string[] args)
        {
            IFigure figure      = new Rectangle(25, 35);
            IFigure cloneFigure = figure.Clone();

            figure.GetInfo();
            cloneFigure.GetInfo();

            figure      = new Circle(45);
            cloneFigure = figure.Clone();
            figure.GetInfo();
            cloneFigure.GetInfo();

            Console.ReadLine();
        }
Exemplo n.º 7
0
        public static void Run()
        {
            Console.WriteLine("\r\n\tPrototype\r\n");

            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();
        }
Exemplo n.º 8
0
        static void Main(string[] args)
        {
            IFigure figure       = new Rectangle(10, 20);
            IFigure clonedFigure = figure.Clone();

            figure.GetInfo();
            clonedFigure.GetInfo();
            figure       = new Circle(15);
            clonedFigure = figure.Clone();
            figure.GetInfo();
            clonedFigure.GetInfo();
            figure       = new Triangle(10, 20, 25);
            clonedFigure = figure.Clone();
            figure.GetInfo();
            clonedFigure.GetInfo();
        }
Exemplo n.º 9
0
        static void Main(string[] args)
        {
            IFigure figure      = new Rectangle(12, 12);
            IFigure figureClone = figure.Clone();

            figure.GetInfo();
            figureClone.GetInfo();


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

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

            IFigure figure       = new Rectangle(10, 20);
            IFigure clonedFigure = figure.Clone();

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

            Console.Read();
        }
Exemplo n.º 11
0
        static void Main(string[] args)
        {
            Factory fac   = new GoodHumanFactory("Ilya");
            Human   human = fac.Create();

            fac = new BadHumanFactory("Naibic");
            Human human2 = fac.Create();

            President president = new President();

            president.GetInfo();

            Builder  builder  = new ConcreteBuilder();
            Director director = new Director(builder);

            director.Construct();
            Product product = builder.GetResult();

            IFigure hum          = new Humans("Dowr");
            IFigure clonedFigure = hum.Clone();

            hum.GetInfo();
            clonedFigure.GetInfo();

            Console.ReadLine();
        }
Exemplo n.º 12
0
        static void Main(string[] args)
        {
            Console.ForegroundColor = ConsoleColor.Green;
            Console.Title           = "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();

            Console.ReadKey();
        }
Exemplo n.º 13
0
        private void PrototypeStart(object sender, RoutedEventArgs e)
        {
            IFigure figure       = new Prototype.Rectangle(30, 40);
            IFigure clonedFigure = figure.Clone();

            MessageBox.Show(figure.GetInfo());
            MessageBox.Show(clonedFigure.GetInfo());

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

            figure = new Circle(15);
            MessageBox.Show(figure.GetInfo());
            Circle deepClonedFigure = figure.DeepCopy() as Circle;

            MessageBox.Show(deepClonedFigure.GetInfo());
        }
Exemplo n.º 14
0
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            IFigure figure = new prototype.Rectangle(30, 40);

            count++;
            IFigure clonedFigure = figure.Clone();

            count++;
            figure.GetInfo(list_txb);
            clonedFigure.GetInfo(list_txb);

            figure = new prototype.Circle(30);
            count++;
            clonedFigure = figure.Clone();
            count++;
            figure.GetInfo(list_txb);
            clonedFigure.GetInfo(list_txb);
            Console_Txb.Text = count.ToString();
        }
Exemplo n.º 15
0
        public void OutPatternInfo()
        {
            Console.WriteLine(
                "Когда нужно использовать паттерн прототип:\n" +
                "Когда конкретный тип создаваемого объекта должен определяться динамически во время выполнения" +
                "Когда нежелательно создание отдельной иерархии классов фабрик для создания объектов - продуктов из параллельной\n" +
                "иерархии классов(как это делается, например, при использовании паттерна Абстрактная фабрика)" +
                "Когда клонирование объекта является более предпочтительным вариантом нежели его создание и инициализация\n" +
                "с помощью конструктора. Особенно когда известно, что объект может принимать небольшое ограниченное число возможных состояний."
                );

            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();
        }
Exemplo n.º 16
0
        private void ButtonClickClone(object sender, RoutedEventArgs e)
        {
            IFigure figure       = new Rectangles(30, 40);
            IFigure clonedFigure = figure.Clone();

            figure.GetInfo();
            clonedFigure.GetInfo();

            IFigure figures       = new Circles(30);
            IFigure clonedFigures = figures.Clone();

            tb.Text = System.String.Format(" {0} \n {1} \n {2} \n {3}", figures.GetInfo(), clonedFigures.GetInfo(), figure.GetInfo(), clonedFigure.GetInfo());
        }
Exemplo n.º 17
0
        static void Main(string[] args)
        {
            IFigure figure       = new Rectangle(30, 40);
            IFigure clonedFigure = figure.Clone();

            figure.GetInfo();
            clonedFigure.GetInfo();

            Circle figure1       = new Circle(5, 4, 2);
            Circle clonedFigure1 = figure1.Clone() as Circle;

            figure1.GetInfo();
            clonedFigure1.GetInfo();
            Console.ReadKey();
        }
        static void Main(string[] args)
        {
            IFigure figure       = new Rectangle(30, 40);
            IFigure clonedFigure = figure.Clone();

            ((Rectangle)clonedFigure).Point.X = 1;
            ((Rectangle)clonedFigure).Point.Y = 1;

            figure.GetInfo();
            clonedFigure.GetInfo();

            Console.WriteLine(new string('-', 52));

            figure       = new Rectangle(30, 40);
            clonedFigure = ((Rectangle)figure).DeepCopy() as IFigure;

            ((Rectangle)clonedFigure).Point.X = 1;
            ((Rectangle)clonedFigure).Point.Y = 1;

            figure.GetInfo();
            clonedFigure.GetInfo();

            Console.Read();
        }
Exemplo n.º 19
0
        static void Main()
        {
            Square    s = new Square(4.5);
            Circle    c = new Circle(3.1);
            Rectangle r = new Rectangle(4.7, 3.8);

            s.GetInfo();
            c.GetInfo();
            r.GetInfo();
            IFigure s1 = s;

            s1.GetInfo();
            IFigure c1 = c;

            c1.GetInfo();
        }
Exemplo n.º 20
0
        private static void Main(string[] args)
        {
            // Factory Method
            // ------------------- Develop
            Console.WriteLine("------------------- Develop");

            Developer dev1   = new DeveloperPanel("ООО ПанельСтрой");
            House     house1 = dev1.Create();

            Developer dev2   = new DeveloperWood("ООО Опушка");
            House     house2 = dev2.Create();

            Developer dev3   = new DeveloperBrick("ООО КирпичСтрой");
            House     house3 = dev3.Create();

            // List

            var developArray = new List <Developer>
            {
                new DeveloperPanel("ООО ПанельСтрой"),
                new DeveloperWood("ООО Опушка"),
                new DeveloperBrick("ООО КирпичСтрой")
            };

            foreach (var dev in developArray)
            {
                dev.Create();
            }

            // ------------------- Money
            Console.WriteLine("------------------- Money");

            // Устанавливаем кодировку чтобы корректно отобразился символ рубля.
            Console.OutputEncoding = Encoding.Unicode;

            // Создаем коллекцию устройств для печати денег.
            // Обратите внимание, что мы можем хранить их все в одной коллекции.
            var machines = new List <CashMachineBase>
            {
                new RubleCashMachine(),
                new DollarCashMachine(),
                new EuroCashMachine()
            };

            // Создаем коллекцию для хранения денег.
            // Опять таки здесь могут храниться любые классы, унаследованные от MoneyBase.
            var money = new List <MoneyBase>();

            // Генератор случайных числе.
            var rnd = new Random();

            // По очереди запускаем устройства для печати денег.
            foreach (var machine in machines)
            {
                // Случайное количество листов для разнообразия.
                var pageCount = rnd.Next(1, 3);

                // Вызываем фабричный метод для создания валюты.
                var newMoney = machine.Create(pageCount);

                // Добавляем созданную валюту в общую коллекцию.
                money.AddRange(newMoney);
            }

            // Выводим данные о деньгах на экран.
            foreach (var note in money)
            {
                Console.WriteLine(note);
            }

            //Console.ReadLine();

            // Template method
            // ------------------- Pie
            Console.WriteLine("------------------- Pie");

            PieBase applePie = new ApplePie();
            PieBase meatPie  = new MeatPie();

            // Готовим мясной пирог.
            Console.WriteLine(meatPie);
            meatPie.Cook();
            // Console.ReadLine();

            // Готовим яблочный пирог.
            Console.WriteLine(applePie);
            applePie.Cook();
            // Console.ReadLine();

            Console.WriteLine("------------------- School");

            School     school     = new School();
            University university = new University();
            College    college    = new College();

            school.Learn();
            university.Learn();
            college.Learn();

            // Adapter
            // ------------------- Travel
            Console.WriteLine("------------------- Travel");

            // Путешественник
            Driver driver = new Driver();

            // Машина
            Auto auto = new Auto();

            // Отправляемся в путешествие
            driver.Travel(auto);

            // Встретились пески, надо использовать верблюда
            Camel camel = new Camel();

            // Используем адаптер
            ITransport camelToTransportAdapter = new CamelToTransportAdapter(camel);

            // Продолжаем путь по пескам пустыни
            driver.Travel(camelToTransportAdapter);

            // Iterator
            // ------------------- Iterator
            Console.WriteLine("------------------- Iterator");

            Aggregate aggregate = new ConcreteAggregate();

            Iterator iterator = aggregate.CreateIterator();

            /*
             * object item = iterator.First();
             * while(!iterator.IsDone())
             * {
             *  item = iterator.Next();
             * }
             */

            Console.WriteLine("------------------- Iterator Books");

            var library = new Library();
            var reader  = new Reader();

            reader.SeeBooks(library);

            Console.WriteLine("------------------- Iterator Words");

            // Клиентский код может знать или не знать о Конкретном Итераторе
            // или классах Коллекций, в зависимости от уровня косвенности,
            // который вы хотите сохранить в своей программе.
            var collection = new BehavioralPatterns.Iterator.Words.WordsCollection();

            collection.AddItem("First");
            collection.AddItem("Second");
            collection.AddItem("Third");

            Console.WriteLine("Straight traversal:");

            foreach (var element in collection)
            {
                Console.WriteLine(element);
            }

            Console.WriteLine("\nReverse traversal:");

            collection.ReverseDirection();

            foreach (var element in collection)
            {
                Console.WriteLine(element);
            }

            // State
            // ------------------- State
            Console.WriteLine("------------------- State");

            var context = new Context(new StateA());

            context.Request(); // Переход в состояние StateB
            context.Request(); // Переход в состояние StateA

            var water = new Water(new LiquidWaterState());

            water.Heat();
            water.Frost();
            water.Frost();

            // Prototype
            // ------------------- Prototype
            Console.WriteLine("------------------- Prototype");

            Prototype prototype = new ConcretePrototype1(5);
            Prototype clone     = prototype.Clone();

            prototype = new ConcretePrototype2(7);
            clone     = prototype.Clone();

            // --- Circle
            IFigure rectangle                = new Rectangle(100, 300);
            IFigure rectangleClone           = rectangle.Clone();
            IFigure rectangleMemberwiseClone = rectangle.CloneMemberwise();

            rectangleMemberwiseClone.GetInfo();
            rectangle.GetInfo();
            rectangleClone.GetInfo();

            IFigure circle      = new Circle(152);
            IFigure circleClone = circle.Clone();

            circle.GetInfo();
            circleClone.GetInfo();

            // Shallow Copy
            Console.WriteLine("--- Shallow Copy");
            var figure      = new Circle2(30, 50, 60);
            var cloneFigure = figure.CloneMemberwise() as Circle2;

            figure.Point.X = 100;
            figure.GetInfo();
            cloneFigure.GetInfo();

            // Deep Copy
            Console.WriteLine("--- Deep Copy");
            var figure2      = new Circle2(30, 50, 60);
            var cloneFigure2 = figure2.DeepCopy() as Circle2;

            figure2.Point.X = 100;
            figure2.GetInfo();
            cloneFigure2.GetInfo();

            // Proxy
            // ------------------- Proxy
            Console.WriteLine("------------------- Proxy");

            var client = new BehavioralPatterns.Proxy.RealProxy.Client();

            Console.WriteLine("Client: Executing the client code with a real subject:");
            var realSubject = new BehavioralPatterns.Proxy.RealProxy.RealSubject();

            client.ClientCode(realSubject);

            Console.WriteLine();
            Console.WriteLine("Client: Executing the same client code with a proxy:");
            var proxy = new BehavioralPatterns.Proxy.RealProxy.Proxy(realSubject);

            client.ClientCode(proxy);
        }
Exemplo n.º 21
0
        static void Main(string[] args)
        {
            #region Creational

            #region FactoryMethod
            Console.WriteLine("FactoryMethod:");
            DeveloperAbsract dev    = new PanelDeveloper("ООО КирпичСтрой");
            HouseAbsctract   house2 = dev.Create();

            dev = new WoodDeveloper("Частный застройщик");
            HouseAbsctract house = dev.Create();
            Console.WriteLine("");
            #endregion


            #region Abstract Factory
            Console.WriteLine("Abstract Factory:");

            Hero elf = new Hero(new ElfFactory());
            elf.Hit();
            elf.Run();

            Hero voin = new Hero(new VoinFactory());
            voin.Hit();
            voin.Run();

            Console.WriteLine("");
            #endregion

            #region Prototype
            Console.WriteLine("Prototype:");

            Console.WriteLine("1. Copy: ");
            IFigure figure       = new Rectangle(30, 40);
            IFigure clonedFigure = figure.Clone();
            figure.GetInfo();
            clonedFigure.GetInfo();

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

            Console.WriteLine("2. Copy 2: ");
            Circle clonedFigure2 = figure.Clone2() as Circle;
            clonedFigure2.Point.X = 50;
            clonedFigure2.Point.X = 60;
            figure.GetInfo();
            clonedFigure2.GetInfo();

            Console.WriteLine("3. DeepCopy: ");
            figure = new Circle(50, 100, 200);
            Circle clonedFigure3 = figure.DeepCopy() as Circle;
            clonedFigure2.Point.X = 10;
            clonedFigure2.Point.X = 10;
            figure.GetInfo();
            clonedFigure2.GetInfo();

            Console.WriteLine("");
            #endregion

            #endregion

            Console.ReadLine();
        }
Exemplo n.º 22
0
        public string Main(IFigure figure)
        {
            IFigure cloneObject = figure.Clone();

            return(cloneObject.GetInfo());
        }
Exemplo n.º 23
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
        }
Exemplo n.º 24
0
        static void Main(string[] args)
        {
            //Factory Method
            Developer dev    = new PanelDeveloper("ООО КирпичСтрой");
            House     house2 = dev.Create();

            dev = new WoodDeveloper("Частный застройщик");
            House house = dev.Create();

            Console.ReadLine();



            //Abstract Factory
            Hero elf = new Hero(new ElfFactory());

            elf.Hit();
            elf.Run();

            Hero voin = new Hero(new VoinFactory());

            voin.Hit();
            voin.Run();

            Console.ReadLine();



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

            Console.Read();


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

            Console.Read();

            //Strategy
            Car auto = new Car(4, "Volvo", new PetrolMove());

            auto.Move();
            auto.Movable = new ElectricMove();
            auto.Move();

            Console.ReadLine();

            //Observer
            Stock  stock  = new Stock();
            Bank   bank   = new Bank("ЮнитБанк", stock);
            Broker broker = new Broker("Иван Иваныч", stock);

            // имитация торгов
            stock.Market();
            // брокер прекращает наблюдать за торгами
            broker.StopTrade();
            // имитация торгов
            stock.Market();

            Console.Read();



            //Command
            Pult pult = new Pult();
            TV   tv   = new TV();

            pult.SetCommand(new TVOnCommand(tv));
            pult.PressButton();
            pult.PressUndo();

            Console.Read();



            //Iterator
            Library library = new Library();
            Reader  reader  = new Reader();

            reader.SeeBooks(library);

            Console.Read();



            //State
            Water water = new Water(new LiquidWaterState());

            water.Heat();
            water.Frost();
            water.Frost();

            Console.Read();
        }