public void Start() { ICreditCard _creditCardDetail = CardFactory.GetCreditCardInstance(CardType.Platinum); Console.WriteLine($"CardType:{_creditCardDetail.GetCardType()}" + $"\n CreditLimit: {_creditCardDetail.GetCreditLimit()}" + $"\n AnnualAverage: {_creditCardDetail.GetAnnualCharge()}"); }
static void Main(string[] args) { /*Problem - Usual Program execution */ //Generally we will get the Card Type from UI. //Here we are hardcoded the card type string cardType = "MoneyBack"; ICreditCard cardDetails = null; //Based of the CreditCard Type we are creating the //appropriate type instance using if else condition if (cardType == "MoneyBack") { cardDetails = new MoneyBack(); } else if (cardType == "Titanium") { cardDetails = new Titanium(); } else if (cardType == "Platinum") { cardDetails = new Platinum(); } if (cardDetails != null) { Console.WriteLine("CardType : " + cardDetails.GetCardType()); Console.WriteLine("CreditLimit : " + cardDetails.GetCreditLimit()); Console.WriteLine("AnnualCharge :" + cardDetails.GetAnnualCharge()); } else { Console.Write("Invalid Card Type"); } /*Problem End here*/ /*Solution - Implementing Factory pattern*/ ICreditCard cardDetailsSolution = CreditCardFactoryPattern.GetCreditCard("Platinum"); if (cardDetails != null) { Console.WriteLine("CardType : " + cardDetailsSolution.GetCardType()); Console.WriteLine("CreditLimit : " + cardDetailsSolution.GetCreditLimit()); Console.WriteLine("AnnualCharge :" + cardDetailsSolution.GetAnnualCharge()); } else { Console.Write("Invalid Card Type"); } /* Solution End Here*/ Console.ReadLine(); }
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(); }
public static void UsingFactoryDP() { ICreditCard cardDetails = CreditCardFactory.GetCardInstance("Platinum"); if (cardDetails != null) { Console.WriteLine("CardType : " + cardDetails.GetCardType()); Console.WriteLine("CreditLimit : " + cardDetails.GetCreditLimit()); Console.WriteLine("AnnualCharge :" + cardDetails.GetAnnualCharge()); } else { Console.Write("Invalid Card Type"); } }
public void CreditCardPattern() { ICreditCard cardDetails = CreditCardFactory.GetCreditCard("Platinum"); 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(); }
static void Main(string[] args) { int cardType = Convert.ToInt32(Console.ReadLine()); ICreditCard cardDetails = CardFactory.GetCardInstance(cardType); if (cardDetails != null) { Console.WriteLine("Card Type: " + cardDetails.GetCardType()); Console.WriteLine("Card Limit: " + cardDetails.GetCreditLimit()); Console.WriteLine("Card Annual Charge: " + cardDetails.GetAnnualCharge()); } else { Console.WriteLine("Invalid Card Type."); } Console.ReadLine(); }
static void Main(string[] args) { Console.WriteLine("Hello Factory Design , This factory desing pattern implementation"); ICreditCard cardDetails = CreditCardFactory.GetCreditCard(CreditCardType.Platinum); 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(); }
static void Main(string[] args) { int cardType = 2; //Getting the instance from the factory class ICreditCard cardDetails = CardFactory.GetCardInstance(cardType); 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(); }
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(); }
public async Task <ActionResult <CardDetailsViewModel> > GetCardDetails(int id, string type) { //Get Card Type switch (type) { case "MoneyBack": _creditCard = new MoneyBackService(); break; case "Platinum": _creditCard = new PlatinumService(); break; case "Titanium": _creditCard = new TitaniumService(); break; } CardDetailsViewModel cardDetailsViewModel = new CardDetailsViewModel(); if (id != 0) { cardDetailsViewModel.CardType = _creditCard.GetCardType(id); cardDetailsViewModel.CardLimit = _creditCard.GetCreditLimit(id); cardDetailsViewModel.CardAnnualCharge = _creditCard.GetAnnualCharge(id); } if (string.IsNullOrEmpty(cardDetailsViewModel.CardType) && cardDetailsViewModel.CardLimit == 0 && cardDetailsViewModel.CardAnnualCharge == 0) { cardDetailsViewModel = null; } if (cardDetailsViewModel == null) { return(NotFound()); } else { return(cardDetailsViewModel); } }
static void ShowCreditCard(ICreditCard c) { Console.WriteLine($"CardType: {c.GetCardType()}; Limit: {c.GetCreditLimit()}; AnnualCharge: {c.GetAnnualCharge()}% "); }
static void Main(string[] args) { Console.WriteLine("--------------Singleton--------------"); //Singleton Parallel.Invoke( () => PrintStudentDetails(), () => PrintEmployeeDetails() ); Console.WriteLine("--------------"); //Simple Factory Design Pattern Console.WriteLine("--------------Simple Factory Design Pattern--------------"); int cardType = 1; ICreditCard cardDetails = CardFactory.GetCardInstance(cardType);; 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.WriteLine("--------------"); //Simple Factory Method Design Pattern Console.WriteLine("--------------Simple Factory Method Design Pattern--------------"); SFMDP.ICreditCard CreditCardInstance = new SFMDP.PlatinumCreditCardFactory().CreateProduct(); if (CreditCardInstance != null) { Console.WriteLine("CardType : " + CreditCardInstance.GetCardType()); Console.WriteLine("CreditLimit : " + CreditCardInstance.GetCreditLimit()); Console.WriteLine("AnnualCharge :" + CreditCardInstance.GetAnnualCharge()); } else { Console.Write("Invalid Card Type"); } CreditCardInstance = new SFMDP.TitaniumCreditCardFactory().CreateProduct(); if (CreditCardInstance != null) { Console.WriteLine("CardType : " + CreditCardInstance.GetCardType()); Console.WriteLine("CreditLimit : " + CreditCardInstance.GetCreditLimit()); Console.WriteLine("AnnualCharge :" + CreditCardInstance.GetAnnualCharge()); } else { Console.Write("Invalid Card Type"); } Console.WriteLine("--------------Providing another layer of Abstraction--------------"); //Providing another layer of Abstraction: // In the above example, we directly call the CreateProduct method on a particular factory class instance to get the actual product instance.What if I need to create the product instance based on the card type value that I received from the user.If this is your requirement, then you need to create another simple factory class as shown below.Create a class with the name CreditCardFactory and then copy and paste the following code. //Setting the Card Type value int CreditCardType = 1; //This is going to return an instance of a Particular Card type object CreditCardInstance = new SFMDP.CreditCardFactory().CreateObject(CreditCardType); if (CreditCardInstance != null) { Console.WriteLine("CardType : " + CreditCardInstance.GetCardType()); Console.WriteLine("CreditLimit : " + CreditCardInstance.GetCreditLimit()); Console.WriteLine("AnnualCharge :" + CreditCardInstance.GetAnnualCharge()); } else { Console.Write("Invalid Card Type"); } Console.WriteLine("--------------"); Console.WriteLine("------Abolish Switch Case--------"); SwitchCase switchCase = new SwitchCase(); switchCase.Type = "Type0"; Console.WriteLine($"Type :: {switchCase.Type} Value :: {switchCase.GetNewValueBasedOnType(1)}"); switchCase.Type = "Type1"; Console.WriteLine($"Type :: {switchCase.Type} Value :: {switchCase.GetNewValueBasedOnType(1)}"); switchCase.Type = "Type2"; Console.WriteLine($"Type :: {switchCase.Type} Value :: {switchCase.GetNewValueBasedOnType(1)}"); var entityFactory = new EntityFactory(); var entity = entityFactory.GetEntityBasedOnType(EntityType.Type0); var result = entity.GetNewValue(1); Console.WriteLine(result); entity = entityFactory.GetEntityBasedOnType(EntityType.Type1); result = entity.GetNewValue(1); Console.WriteLine(result); entity = entityFactory.GetEntityBasedOnType(EntityType.Type2); result = entity.GetNewValue(1); Console.WriteLine(result); Console.WriteLine("--------------"); Console.ReadLine(); }
static void Print(ICreditCard crediCard) { Console.WriteLine(crediCard.GetCardType()); Console.WriteLine(crediCard.GetCreditLimit()); Console.WriteLine(crediCard.GetAnualFee()); }