Esempio n. 1
0
        static void Main(string[] args)
        {
            SystemConsole.WriteLine("Hello World!");

            foreach (IFactory factory in Factories)
            {
                IFactoryObject factoryObject = factory.MakeObject();
                factoryObject.PrintSelf();
            }

            IBuiltObject builtObject1 =
                new Builder(_logger)
                .Start()
                .Annoying()
                .Loud()
                .WithColor(ConsoleColor.Green)
                .Build();

            IBuiltObject builtObject2 =
                new Builder(_logger)
                .Start()
                .Quiet()
                .WithColor(ConsoleColor.Yellow)
                .Build();

            builtObject1.PrintSelf();
            builtObject2.PrintSelf();

            foreach (IFactoryMethod factoryMethod in FactoryMethods)
            {
                IFactoryObject factoryObject = factoryMethod.CreateObject();
                factoryObject.PrintSelf();
            }

            IPrototype prototype = Prototype.InitialPrototype.Clone();

            for (int i = 0; i < 10; ++i)
            {
                SystemConsole.WriteLine($"prototype #{prototype.Id} copied");
                prototype = prototype.Clone();
            }

            Singleton singleton = Singleton.Instance;

            SystemConsole.WriteLine($"Singleton created at {singleton.CreationDateTime}");

            DivisionResult <int> divisionResult = _multiplyDivideAdapter.Divide(10, 3);

            SystemConsole.WriteLine($"{nameof(MultiplyDivideAdapter)}: 10 / 3 = {divisionResult.WholePart} with remainder {divisionResult.Remainder}");

            int multiplicationResult = _multiplyDivideAdapter.Multiply(10, 3);

            SystemConsole.WriteLine($"{nameof(MultiplyDivideAdapter)}: 10 x 3 = {multiplicationResult}");

            _logger.Log("Turn on hot");
            _hotWaterPipeBridge.TurnOn();
            _logger.Log("Turn off hot");
            _hotWaterPipeBridge.TurnOff();
            _logger.Log("Sprinkling hot");
            _hotWaterPipeBridge.Sprinkle();

            _logger.Log("Turn on cold");
            _coldWaterPipeBridge.TurnOn();
            _logger.Log("Turn off cold");
            _coldWaterPipeBridge.TurnOff();
            _logger.Log("Sprinkling cold");
            _coldWaterPipeBridge.Sprinkle();

            _TraverseCompositeTree(_composite);

            _logger.Log($"It seems we have a gift! First let's unwrap the {_wrapper.GetType().Name}");
            GiftBox giftBox = (_wrapper as WrappingPaper).Unwrap();

            _logger.Log($"We have the {giftBox.GetType().Name} open, now let's take our gift out.");
            Gift gift = giftBox.Open();

            _logger.Log($"The gift is a {gift.Name}!");

            _logger.Log($"Random divided numbers from facade: {_facade.GetRandomNumbersAndDivideThem()}");
            _logger.Log($"Random multiplied numbers from facade: {_facade.GetRandomNumbersAndMultiplyThem()}");

            SystemConsole.ReadLine();
        }