Ejemplo n.º 1
0
        static void Main(string[] args)
        {
            CardFactory factory = null;

            Console.Write("Hello!!! Specify the card type you would like to see (moneyback/titanium/platinum): ");
            string card = Console.ReadLine();

            switch (card.ToLower())
            {
            case "moneyback":
                factory = new MoneyBackCard(50000, 0);
                break;

            case "titanium":
                factory = new TitaniumCard(100000, 500);
                break;

            case "platinum":
                factory = new PlatinumCard(500000, 1000);
                break;

            default:
                break;
            }

            CreditCard creditCard = factory.GetCreditCard();

            Console.WriteLine("\nYour card details are below : \n");
            Console.WriteLine("Card Type: {0}\nCredit Limit: {1}\nAnnual Charge: {2}",
                              creditCard.CardType, creditCard.CreditLimit, creditCard.AnnualCharge);
            Console.ReadKey();
        }
Ejemplo n.º 2
0
        public CommonCard EmitCard(string cardType, Customer customer)
        {
            CommonCard card;

            switch (cardType)
            {
            case "sav":
                card = new SavingsCard(Guid.NewGuid().ToString(), new CardSecurity(), DateTime.Now.AddYears(5), customer, this);
                break;

            case "univ":
                card = new UniversalCard(Guid.NewGuid().ToString(), new CardSecurity(), DateTime.Now.AddYears(5), customer, this);
                break;

            case "plat":
                card = new PlatinumCard(Guid.NewGuid().ToString(), new CardSecurity(), DateTime.Now.AddYears(5), customer, this);
                break;

            default: throw new ArgumentException("Wrong card type");
            }
            CardsEmitted++;
            return(card);
        }
Ejemplo n.º 3
0
        static void Main(string[] args)
        {
            #region Creational Patterns Calling
            #region Singleton
            //SingletonDemo SingletonObject = SingletonDemo.GetObject();
            //SingletonObject.Print("Hello World");

            //SingletonDemo SingletonObject1 = SingletonDemo.GetObject();
            //SingletonObject1.Print("HELLO DUNYA");

            //SingletonDemo SingletonObject2 = SingletonDemo.GetObject();
            //SingletonObject2.Print("HELLO");

            //Console.ReadLine();
            #endregion
            #region Factory
            IPaymentCard card = null;
            Console.WriteLine("Please Select your card type");
            string choice = Console.ReadLine();
            switch (choice.ToLower())
            {
            case "debit":
                card = new DebitCard();
                PrintCardDetails(card);
                break;

            case "gold":
                card = new GoldCard();
                PrintCardDetails(card);
                break;

            case "platinum":
                card = new PlatinumCard();
                PrintCardDetails(card);
                break;

            default:
                card = null;
                PrintCardDetails(card);
                break;
            }

            #endregion
            #endregion
            #region Structural Patterns Calling
            #region Decorator
            ////Step 1: Define some dishes, and how many of each we can make
            //FreshSalad caesarSalad = new FreshSalad("Crisp romaine lettuce", "Freshly-grated Parmesan cheese", "House-made Caesar dressing");
            //caesarSalad.Display();

            //Pasta fettuccineAlfredo = new Pasta("Fresh-made daily pasta", "Creamly garlic alfredo sauce");
            //fettuccineAlfredo.Display();

            //Console.WriteLine("\nMaking these dishes available.");

            ////Step 2: Decorate the dishes; now if we attempt to order them once we're out of ingredients, we can notify the customer
            //Available caesarAvailable = new Available(caesarSalad, 3);
            //Available alfredoAvailable = new Available(fettuccineAlfredo, 4);

            ////Step 3: Order a bunch of dishes
            //caesarAvailable.OrderItem("John");
            //caesarAvailable.OrderItem("Sally");
            //caesarAvailable.OrderItem("Manush");

            //alfredoAvailable.OrderItem("Sally");
            //alfredoAvailable.OrderItem("Francis");
            //alfredoAvailable.OrderItem("Venkat");
            //alfredoAvailable.OrderItem("Diana");
            //alfredoAvailable.OrderItem("Dennis"); //There won't be enough for this order.

            //caesarAvailable.Display();
            //alfredoAvailable.Display();

            //Console.ReadKey();
            #endregion
            #region Adapter
            //Program p = new Program();
            //p.getJson();
            //Console.Read();
            #endregion
            #endregion
            #region Behavioral Patterns Calling
            #region Chain Of Responsibility
            // Setup Chain of Responsibility

            //Approver Waqas = new Director();
            //Approver Azeem = new VicePresident();
            //Approver Raheel = new President();

            //Waqas.SetSuccessor(Azeem);
            //Azeem.SetSuccessor(Raheel);

            //// Generate and process purchase requests

            //Purchase pr = new Purchase(2034, 350.00, "Assets");
            //Waqas.ProcessRequest(pr);

            //pr = new Purchase(2035, 32590.10, "Servers");
            //Waqas.ProcessRequest(pr);

            //pr = new Purchase(2036, 122100.00, "Property");
            //Waqas.ProcessRequest(pr);

            //// Wait for user

            //Console.ReadKey();
            #endregion
            #endregion
        }