// GET: api/DesignPattern /*public IEnumerable<string> Get() * { * return new string[] { "value1", "value2" }; * }*/ // GET: api/DesignPattern/5 public string Get(string card) { CardFactory factory = null; switch (card.ToLower()) { case "moneyback": factory = new MoneyBackFactory(50000, 0); break; case "titanium": factory = new TitaniumFactory(100000, 500); break; case "platinum": factory = new PlatinumFactory(500000, 1000); break; default: break; } var creditCard = factory.GetCreditCard(); var cardDetails = $" Card Type : {creditCard.CardType} Credit Limit : {creditCard.CreditLimit} Annual Charges : {creditCard.AnnualCharge}"; return(cardDetails); }
private static void Factory_Method_Pattern() { // TODO when you are about to instantiate lets encapsulate that instantiation so that we can make uniform in all places -> // TODO -> you can use the factory when you want to instantiate and the factory is responsible to instantiate appropriately CardFactory factory = null; Console.Write("Enter the card type you would like to visit: "); string card = Console.ReadLine(); switch (card.ToLower()) { case "moneyback": factory = new MoneyBackFactory(50000, 0); break; case "titanium": factory = new TitaniumFactory(100000, 500); break; case "platinum": factory = new PlatinumFactory(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(); }
//Concrete meaning real or actual //Product and Creator //Then things as RealCreator and RealProduct //Factory method pattern falls under Creational Pattern of Gang of Four (GoF) Design Patterns. static void Main(string[] args) { CardFactory factory = null; Console.Write("Enter the card type you would like to visit: "); string car = Console.ReadLine(); switch (car.ToLower()) { case "moneyback": factory = new MoneyBackFactory(50000, 0); break; case "titanium": factory = new TitaniumFactory(100000, 500); break; case "platinum": factory = new PlatinumFactory(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(); }
static void Main(string[] args) { CartaoFactory cartaoFactory = null; Console.Write("Digite o tipo de cartão que gostaria de obter:"); string console = Console.ReadLine(); switch (console.ToLower()) { case "black": cartaoFactory = new BlackFactory(50000, 0); break; case "titanium": cartaoFactory = new TitaniumFactory(100000, 500); break; case "platinum": cartaoFactory = new PlatinumFactory(500000, 1000); break; default: break; } CartaoCredito cartaoCredito = cartaoFactory.BuscarCartaoCredito(); Console.WriteLine("\nOs detalhes do seu cartão estão abaixo: \n"); Console.WriteLine("Tipo do Cartao: {0}\nCrédito limite: {1}\nCobrança Anual: {2}", cartaoCredito.TipoCartao, cartaoCredito.LimiteCredito, cartaoCredito.CobrancaAnual); Console.ReadKey(); }
static void Main(string[] args) { CreditCard creditCard = new PlatinumFactory().CreateProduct(); if (creditCard != null) { Console.WriteLine("Card Type : " + creditCard.GetCardType()); Console.WriteLine("Credit Limit : " + creditCard.GetCreditLimit()); Console.WriteLine("Annual Charge :" + creditCard.GetAnnualCharge()); } else { Console.Write("Invalid Card Type"); } Console.WriteLine("---------------------------------"); creditCard = new TitaniumFactory().CreateProduct(); if (creditCard != null) { Console.WriteLine("Card Type : " + creditCard.GetCardType()); Console.WriteLine("Credit Limit : " + creditCard.GetCreditLimit()); Console.WriteLine("Annual Charge :" + creditCard.GetAnnualCharge()); } else { Console.Write("Invalid Card Type"); } Console.ReadKey(); }
public void Factory_pattern_test() { CardFactory factory = null; string cardType = "moneyback"; switch (cardType.ToLower()) { case "moneyback": factory = new MoneyBackFactory(50000, 0); break; case "titanium": factory = new TitaniumFactory(100000, 500); break; case "platinum": factory = new PlatinumFactory(500000, 1000); break; default: break; } CreditCard card = factory.GetCreditCard(); Assert.AreEqual("MoneyBack", card.CardType); Assert.AreEqual(50000, card.CreditLimit); Assert.AreEqual(0, card.AnnualCharge); }
public void CreditCardFactoryMethod() { ICreditCard creditCard = new PlatinumFactory().CreateProduct(); if (creditCard != null) { Console.WriteLine("Card Type : " + creditCard.GetCardType()); Console.WriteLine("Credit Limit : " + creditCard.GetCreditLimit()); Console.WriteLine("Annual Charge :" + creditCard.GetAnnualCharge()); } else { Console.Write("Invalid Card Type"); } Console.WriteLine("--------------"); creditCard = new MoneyBackFactory().CreateProduct(); if (creditCard != null) { Console.WriteLine("Card Type : " + creditCard.GetCardType()); Console.WriteLine("Credit Limit : " + creditCard.GetCreditLimit()); Console.WriteLine("Annual Charge :" + creditCard.GetAnnualCharge()); } else { Console.Write("Invalid Card Type"); } Console.ReadLine(); }
static void Main(string[] args) { string console = null; string x; CartaoFactory cartaoFactory = null; do { Console.WriteLine("\nISTO É APENAS UM TESTE\n"); Console.WriteLine("Digite o tipo de cartão que deseja"); Console.WriteLine("Opção 1 - Cartão Black"); Console.WriteLine("Opção 2 - Cartão Platinum"); Console.WriteLine("Opção 3 - Cartão Titanium"); console = Console.ReadLine(); if (console == "1" || console == "2" || console == "3" + "") { switch (console) { case "1": cartaoFactory = new BlackFactory(50000, 0); break; case "2": cartaoFactory = new PlatinumFactory(10000, 100); break; case "3": cartaoFactory = new TitaniumFactory(150000, 150); break; default: break; } CartaoCredito cartaoCredito = cartaoFactory.BuscarCartaoCredito(); Console.WriteLine("\nISTO É APENAS UM TESTE\n"); Console.WriteLine("\nObrigado por escolher o seu cartão"); Console.WriteLine("\nSegue a baixo os detalhes do seu cartão:\n"); Console.WriteLine("Tipo do cartão:{0}\nCrédito Limite:{1}\nCobrança Anual:{2}", cartaoCredito.TipoCartao, cartaoCredito.LimiteCredito, cartaoCredito.CobrancaAnual); Console.WriteLine("\nDeseja continuar? S/N\n"); x = Console.ReadLine().ToUpper(); } else { Console.WriteLine("\nISTO É APENAS UM TESTE\n"); Console.WriteLine("\nNúmero inválido\n"); Console.WriteLine("\nDeseja continuar? S/N\n"); x = Console.ReadLine().ToUpper(); Console.WriteLine("\nISTO É APENAS UM TESTE\n"); } }while (x == "S" || x == "SIM"); Console.ReadKey(); }
public void TestMethod1() { PlatinumFactory _factory; _factory = new PlatinumFactory(100000, 500); var value = _factory.GetCreditCard(); Assert.AreEqual("Platinum", value.CardType); Assert.AreEqual(100000, value.CreditLimit); Assert.AreEqual(500, value.AnnualCharge); }
public void Test3() { PlatinumFactory fact; fact = new PlatinumFactory(500000, 1000); CreditCard card = fact.GetCreditCard(); string expected1 = card.CardType; int expected2 = card.CreditLimit; int expected3 = card.AnnualCharge; string actual1 = "Platinum"; int actual2 = 500000; int actual3 = 1000; //Assert Assert.Equal(expected1, actual1); Assert.Equal(expected2, actual2); Assert.Equal(expected3, actual3); }
static void Main(string[] args) { Console.WriteLine("Factory Pattern"); Console.WriteLine("The factory design pattern in C# is used to replace class constructors, abstracting the process of object generation so that the type of the object instantiated can be determined at run-time"); Console.WriteLine(); // Abstract implementation Console.WriteLine("Abstract implementation"); Creator creator = new ConcreteCreator(); // You can not instantiate abstract classes Product product = creator.factoryMethod(); product.Operation(); Console.WriteLine(); // Example implementation Console.WriteLine("Example implementation (credit cards)"); CardFactory cardFactory; CreditCard creditCard; cardFactory = new MoneyBackFactory(50000, 0); creditCard = cardFactory.GetCreditCard(); creditCard.PrintDetails(); cardFactory = new TitaniumFactory(100000, 500); creditCard = cardFactory.GetCreditCard(); creditCard.PrintDetails(); cardFactory = new PlatinumFactory(500000, 1000); creditCard = cardFactory.GetCreditCard(); creditCard.PrintDetails(); Console.WriteLine(); Console.ReadKey(); }
public static void Main(string[] args) { Console.WriteLine("Creational Patterns deals with object creation!"); Console.WriteLine("<---------------------------- Singleton ---------------------------->"); Parallel.Invoke(() => { SimpleSingleton simpleSingleton = SimpleSingleton.Instance; }, () => { SimpleSingleton simpleSingleton = SimpleSingleton.Instance; }); Parallel.Invoke(() => { ThreadSafeSingleton threadSafeSingleton = ThreadSafeSingleton.Instance; }, () => { ThreadSafeSingleton threadSafeSingleton = ThreadSafeSingleton.Instance; }); Parallel.Invoke(() => { LazySingleton lazySingleton = LazySingleton.Instance; }, () => { LazySingleton lazySingleton = LazySingleton.Instance; }); Console.WriteLine("<---------------------------- Simple Factory ---------------------------->"); SimpleFactory.ICreditCard card = SimpleFactory.CreditCardFactory.GetCreditCard(SimpleFactory.CreditCardType.Platinum); Console.WriteLine($"Credit card Type: {card.GetCardType()}"); Console.WriteLine($"Credit card Limit: {card.GetLimit()}"); Console.WriteLine($"Credit card AnnualCharges: {card.GetAnnualCharges()}"); card = SimpleFactory.CreditCardFactory.GetCreditCard(SimpleFactory.CreditCardType.Titanium); Console.WriteLine($"Credit card Type: {card.GetCardType()}"); Console.WriteLine($"Credit card Limit: {card.GetLimit()}"); Console.WriteLine($"Credit card AnnualCharges: {card.GetAnnualCharges()}"); Console.WriteLine("<---------------------------- Factory Method ---------------------------->"); FactoryMethod.CreditCardFactory creditCardFactory = new PlatinumFactory(); FactoryMethod.ICreditCard creditCard = creditCardFactory.GetCreditCard(); Console.WriteLine($"Credit card Type: {creditCard.GetCardType()}"); Console.WriteLine($"Credit card Limit: {creditCard.GetLimit()}"); Console.WriteLine($"Credit card AnnualCharges: {creditCard.GetAnnualCharges()}"); creditCardFactory = new TitaniumFactory(); creditCard = creditCardFactory.GetCreditCard(); Console.WriteLine($"Credit card Type: {creditCard.GetCardType()}"); Console.WriteLine($"Credit card Limit: {creditCard.GetLimit()}"); Console.WriteLine($"Credit card AnnualCharges: {creditCard.GetAnnualCharges()}"); Console.WriteLine("<---------------------------- Abstract Factory ---------------------------->"); ComputerFactory computerFactory = new ComputerFactory(new ExpensiveComputer()); computerFactory.Assemble(); computerFactory = new ComputerFactory(new CheapComputer()); computerFactory.Assemble(); Console.WriteLine("<---------------------------- Builder ---------------------------->"); Builder.IComputer computer = new Builder.LaptopBuilder(); computer.AddCPU("Intel I3"); computer.AddGPU("AMD Rideon"); computer.AddRAM("8 GB"); computer.AddHDD("SATA 500 GB"); computer.EanbleTouchscreen(true); computer.DisplayDetails(); computer = new Builder.DesktopBuilder(); computer.AddCPU("Intel I5"); computer.AddGPU("NVidea"); computer.AddRAM("16 GB"); computer.AddHDD("SATA 1 TB"); computer.AddMonitor("Full HD"); computer.DisplayDetails(); Console.WriteLine("<---------------------------- Fluent Builder ---------------------------->"); FluentBuilder.IComputer computer1 = new FluentBuilder.LaptopBuilder(); computer1.AddCPU("Intel I3") .AddGPU("AMD Rideon") .AddRAM("8 GB") .AddHDD("SATA 500 GB") .EanbleTouchscreen(true) .DisplayDetails(); computer1 = new FluentBuilder.DesktopBuilder(); computer1.AddCPU("Intel I5") .AddGPU("NVidea") .AddRAM("16 GB") .AddHDD("SATA 1 TB") .AddMonitor("Full HD") .DisplayDetails(); Console.ReadLine(); }