Example #1
0
        static void Main(string[] args)
        {
            Console.WriteLine("\n************************ Singleton Pattern *************************** ");
            // example of using singleton
            Singleton.Instance.TestMethod();

            Console.WriteLine("\n************************ Factory Pattern *************************** ");

            var factory = new BasicFactory();
            var block   = factory.CreateBlock();

            Console.WriteLine("\nCreated with BasicFactory type: " + block.GetName());

            var factory2 = new SegmentedFactory();
            var block2   = factory2.CreateBlock();

            Console.WriteLine("\nCreated with SegmentedFactory type: " + block2.GetName());

            var generalFactory = new Factory();
            var block3         = generalFactory.CreateBlock(Factory.Type.Basic);
            var block4         = generalFactory.CreateBlock(Factory.Type.Segmented);

            Console.WriteLine("\nCreated with Factory block3: " + block3.GetName() + " block4: " + block4.GetName());

            Console.WriteLine("\n************************ Adapter Pattern *************************** ");

            IAdapter adapter1 = new AdapterUI1(new UISystem1());
            IAdapter adapter2 = new AdapterUI2(new UISystem2());

            adapter1.IncreaseProgress();
            adapter1.IncreaseHealth();
            adapter2.IncreaseProgress();
            adapter2.IncreaseHealth();
            Console.WriteLine("For additional test press arrow up!");

            Console.WriteLine("\n************************ Facade Pattern *************************** ");

            //Facade
            Mortgage mortgage = new Mortgage();

            //Evaluate mortgage eligibility for customer
            Customer customer = new Customer("Marko Milovanovic");
            bool     eligible = mortgage.IsEligible(customer, 60000);

            Console.WriteLine("\n" + customer.Name + " has been " + (eligible ? "Approved" : "Rejected"));

            Console.WriteLine("\n************************ Chain Of Responsibility Pattern *************************** ");
            var coinsShopHandler   = new BuyCoinsHandler();
            var costumeShopHandler = new BuyCostumeHandler();
            var packShopHandler    = new BuyPackHandler();

            coinsShopHandler.SetSuccessor(costumeShopHandler);
            costumeShopHandler.SetSuccessor(packShopHandler);

            coinsShopHandler.HandleRequest(ShopItemType.Costume);

            Console.WriteLine("\n************************ Observer Pattern *************************** ");
            Game.Instance.Score++;
            Console.WriteLine("For additional testing press 'I' . We have UIController and AchievementController as observers!");

            ConsoleKeyInfo keyinfo;

            do
            {
                keyinfo = Console.ReadKey(true);
                if (keyinfo.Key == ConsoleKey.UpArrow)
                {
                    Console.WriteLine("\nAdapter Pattern testing:");
                    adapter1.IncreaseProgress();
                    adapter1.IncreaseHealth();
                    adapter2.IncreaseProgress();
                    adapter2.IncreaseHealth();
                }

                if (keyinfo.Key == ConsoleKey.I)
                {
                    Console.WriteLine("\nObserver Pattern testing:");
                    Game.Instance.Score++;
                }
            }while (keyinfo.Key != ConsoleKey.Spacebar);
        }