static void Main(string[] args) { ICreditCard m_CreditCard = null; Console.WriteLine("Please Choose your credit card type (0,1,2)"); CreditCardType x = (CreditCardType)Enum.Parse(typeof(CreditCardType), Console.ReadLine()); switch (x) { case CreditCardType.MoneyBack: m_CreditCard = new MoneyBack(); break; case CreditCardType.Titanuim: m_CreditCard = new Titanium(); break; case CreditCardType.Platinum: m_CreditCard = new Platinum(); break; default: break; } Console.WriteLine("First Without use Factory Design Patterns"); Console.WriteLine(""); Console.WriteLine($"Card Type is {m_CreditCard?.GetCardType() ?? "Invalid card"}"); Console.WriteLine($"Credit Limit is {m_CreditCard?.GetCreditLimit() ?? 0}"); Console.WriteLine($"Annual Charge is {m_CreditCard?.GetAnnualCharge() ?? 0}"); Console.WriteLine(""); Console.WriteLine("*************************************************************"); Console.WriteLine(""); Console.WriteLine("Second Use Factory Design Patterns"); Console.WriteLine(""); ICreditCard creditCardFactory = CreditCardFactory.GetCreditCard(x); if (x == CreditCardType.MoneyBack) { ((MoneyBack)creditCardFactory).GetAnnualCharge Console.WriteLine($"Card Type is {creditCardFactory?.GetCardType() ?? "Invalid card"}"); } Console.WriteLine($"Credit Limit is {creditCardFactory?.GetCreditLimit() ?? 0}"); Console.WriteLine($"Annual Charge is {creditCardFactory?.GetAnnualCharge() ?? 0}"); Console.ReadLine(); }
private static void Main(string[] args) { //Generally we will get the Card Type from UI. //Here we are hardcoded the card type ICreditCard cardDetails = CreditCardFactory.GetCreditCard("MoneyBack"); if (cardDetails != null) { Console.WriteLine("CardType : " + cardDetails.GetCardType()); Console.WriteLine("CreditLimit : " + cardDetails.GetCreditLimit()); Console.WriteLine("AnnualCharge :" + cardDetails.GetAnnualCharge()); } else { Console.Write("Invalid Card Type"); } Console.ReadLine(); }