Example #1
0
 public House(int numberHouse, int squareMeters, int numberOfResidents, DecoratorBuilder builder = null)
 {
     this.Number    = numberHouse;
     this.Area      = squareMeters;
     this.Residents = numberOfResidents;
     this.Builder   = builder ?? new BasicBuilder();
 }
Example #2
0
 public Square(string squareName, double lengthMeters, int trees, int streetlights, DecoratorBuilder builder = null)
 {
     this.Name         = squareName;
     this.Area         = lengthMeters;
     this.Trees        = trees;
     this.Streetlights = streetlights;
     this.Builder      = builder ?? new BasicBuilder();
 }
Example #3
0
        public static void Main(string[] args)
        {
            IChat chat = new Chat();

            chat = new DecoratorBuilder(chat)
                   .WithTextEncrypt()
                   .WithUserHide()
                   .Build();
            chat.SendMessage(new Message("Alex", "Ivan", "Hi"));
            chat.SendMessage(new Message("Alex", "Ivan", "How are you?"));
            chat.SendMessage(new Message("Ivan", "Alex", "Fine"));
            Console.WriteLine();
            var messages = chat.GetMessages("Ivan");

            Console.WriteLine(string.Join("\n", messages.Select(m => m.Text)));
            Console.ReadKey();
        }
Example #4
0
        static void Main(string[] args)
        {
            IChatClient chatclient = new ChatClient();

            //цепочка дерорторов
            chatclient = new DecoratorBuilder(chatclient)
                         .WithUserHiding()
                         .WithTextEncryption()
                         .Build();

            var message = new Message(author: "George", addressee: "Alexander", text: "Test. Hello there! How are you?");

            chatclient.SendMessage(message);
            var result = chatclient.ReceiveMessage(message);

            Console.ReadLine();
        }
Example #5
0
        public static void DecoratorExample()
        {
            //Пустой калькулятор, без дополнительной логики
            ICalculator calculator = new Calcuator();

            //Калькулятор задекорированный логером и таймером
            //calculator = new TimerDecorator(calculator);
            //calculator = new LoggerDecorator(calculator);

            //Пример билдера раширения для удобного составления цепочки дерорторов
            calculator = new DecoratorBuilder(calculator)
                         .WithTimer()
                         .WithLogger()
                         .Build();

            calculator.SetFunction((x) => x * 2);
            var result = calculator.Calculate(2);

            Console.WriteLine(result);
        }
Example #6
0
        static void Main(string[] args)
        {
            var chatClient = new DecoratorBuilder(new ChatClient())
                             .WithEncodeText()
                             .WithEncodeUser()
                             .Build();

            var message = new Message("I", "She", "Hello");

            chatClient.SendMessage(message);

            var messages = chatClient.GetMessage();

            foreach (Message testMessage in messages)
            {
                Console.WriteLine("----Message----");
                Console.WriteLine($"Author: {testMessage.Author}");        // Author: #
                Console.WriteLine($"Recipient: {testMessage.Recipient}");  // Recipient: ###
                Console.WriteLine($"Text: {testMessage.Text}");            // Text: (encode)Hello(encode)
            }
        }
Example #7
0
        public static ISector[][] BuildDecorator(double squareMeters, DecoratorBuilder builder)
        {
            var area   = Math.Sqrt(squareMeters);
            var n      = (int)Math.Round(area);
            var fields = new ISector[n][];

            for (int i = 0; i < n; i++)
            {
                fields[i] = new ISector[n];
            }

            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < n; j++)
                {
                    fields[i][j] = builder.BuildDecorator();
                }
            }

            return(fields);
        }