static Catalogue CreateCatalogue(AbstractFactory factory) { //Create a catalogue by adding factory products to it //Here we use the same construction process but allow the catalogue to contain a differet family of products Catalogue catalogue = factory.MakeCatalogue("Catalogue (Factory Made)"); catalogue.AddProductA(factory.MakeProductA("1")); catalogue.AddProductA(factory.MakeProductA("2")); catalogue.AddProductA(factory.MakeProductA("3")); catalogue.AddProductB(factory.MakeProductB("1")); return catalogue; }
// static void Main(string[] args) { //Create a catalogue with a known, single family of products Catalogue catalogue = CreateCatalogue(); Console.WriteLine(catalogue.ListProducts()); //Create a catalogue with a family of default products AbstractFactory factory = new AbstractFactory(); catalogue = CreateCatalogue(factory); Console.WriteLine(catalogue.ListProducts()); //Create another catalogue with a new family of products AbstractFactory factory1 = new ConcreteFactory1(); Catalogue catalogue1 = CreateCatalogue(factory1); Console.WriteLine(catalogue1.ListProducts()); //Create another catalogue with another new family of products AbstractFactory factory2 = new ConcreteFactory2(); Catalogue catalogue2 = CreateCatalogue(factory2); Console.WriteLine(catalogue2.ListProducts()); Console.Read(); }
static void Main(string[] args) { //Solid Desgin Principles //SingleResponsibilityPrinciple.run(); //OpenClosedPrinciple.run(); //LiskovSubstitutionPrinciple.run(); //InterfaceSegregationPrinciple.run(); //DependencyInversionPrinciple.run(); //Builder Pattern //Builder.run(); //FluentBuilderInheritanceRecursiveGenerics.run(); //FacetedBuilder.run(); //Factory Pattern //Factory.run(); AbstractFactory.run(); if (System.Diagnostics.Debugger.IsAttached) { Console.ReadKey(); } }
private static void PrintAbstractFactory() { Console.WriteLine(@"----------------------------------------------------------------------"); Console.WriteLine(@"--- Examples of design patterns ---"); Console.WriteLine(@"--- Abstract factory ---"); Console.WriteLine(@"----------------------------------------------------------------------"); string factoryName = PrintAbstractFactory_GetFactoryName(EnumDbProvider.SqlClient); var providerFactory = DbProviderFactories.GetFactory(factoryName); var authentication = new Authentication(); var abstractFactory = new AbstractFactory(providerFactory, @"LOCALHOST\SQL2019", "SAMPLE", authentication, "DesignPatterns"); var query = "SELECT * FROM [HUMAN] WHERE [ID] > @ID ORDER BY [ID]"; Console.WriteLine($@"string {nameof(factoryName)} = {nameof(PrintAbstractFactory_GetFactoryName)}({nameof(EnumDbProvider)}.{factoryName});"); Console.WriteLine($@"var {nameof(providerFactory)} = DbProviderFactories.GetFactory({nameof(factoryName)});"); Console.WriteLine($@"var {nameof(authentication)} = new Authentication();"); Console.WriteLine($@"var {nameof(abstractFactory)} = new {nameof(AbstractFactory)}(" + $@"{nameof(providerFactory)}, ""{abstractFactory.DataSource}"", ""{abstractFactory.InitialCatalog}"", {nameof(authentication)});"); Console.WriteLine($@"var query = ""{query}"""); Console.WriteLine(@"----------------------------------------------------------------------"); var records = abstractFactory.SelectData(query, new Collection <(string, object)>() { ("ID", 10) }, new Collection <string>() { "ID", "FIRSTNAME", "LASTNAME", "SURNAME" }); foreach (var record in records) { Console.WriteLine(string.Join("; ", record)); } }
public Client(AbstractFactory factory) { _abstractProductA = factory.CreateProductA(); _abstractProductB = factory.CreateProductB(); }
public Client(AbstractFactory product) { productA = product.GetProductA(); productB = product.GetProductB(); }
// Constructor public Client(AbstractFactory factory) { _abstractProductB = factory.CreateProductB(); _abstractProductA = factory.CreateProductA(); }