static void Main(string[] args) { // Проблема: // SimpleProduct sproduct = new SimpleProduct(); // sproduct.DoSomething(); // Если по каким-либо причинам, SimpleProduct изменится, то придётся менять все обращения к SimpleProduct по всему проекту. // В данном примере вызов один, но вдруг их будет 20? Каждый раз менять 20 мест? // К тому же жизненный цикл даного объекта контролируется на клиенте. // ... // Не стоит так делать, создадим отдельный класс для формирования продукта Factory simpleFactory = new SimpleFactory(); // Создадим продукт с помощью фабричного метода AbstractProduct aproduct = simpleFactory.CreateProduct(ProductType.ProductA); aproduct.DoSomething(); AbstractProduct bproduct = simpleFactory.CreateProduct(ProductType.ProductB); bproduct.DoSomething(); AbstractProduct nproduct = simpleFactory.CreateProduct(ProductType.ProductN); nproduct.DoSomething(); // Вуаля, подробности создания объекта скрыты Console.ReadLine(); }
static void Main(string[] args) { // Get a ProductA var productA = SimpleFactory.CreateProduct("A"); // Get a ProductB var productB = SimpleFactory.CreateProduct("B"); }
static void Main(string[] args) { Parent parent = null; parent = SimpleFactory.Create(ChildType.A); parent = SimpleFactory.Create(ChildType.B); parent = SimpleFactory.Create(ChildType.C); Console.ReadKey(); }
static void Main(string[] args) { // Simple Factory var classType = SimpleFactory.GetClassType("Class1"); classType.DoSomething(); classType = SimpleFactory.GetClassType("Class2"); classType.DoSomething(); }
public static SimpleFactory GetInstance() { if (simpleFactory != null) { simpleFactory = new SimpleFactory(); } return(simpleFactory); }
static void Main(string[] args) { Console.WriteLine("***Simple Factory Pattern Demo***\n"); IAnimal preferredType = null; ISimpleFactory simpleFactory = new SimpleFactory(); preferredType = simpleFactory.CreateAnimal(); preferredType.Speak(); preferredType.Action(); }
private static void Main(string[] args) { if (args == null) { throw new ArgumentNullException(nameof(args)); } AbstractOperation abstractOperation = SimpleFactory.GetOperation("+"); abstractOperation.Number1 = 2; abstractOperation.Number2 = 4; Console.WriteLine(abstractOperation.GetResult()); Console.ReadKey(); }
static void Main(string[] args) { Laptop laptop = SimpleFactory.NewLaptop("Ideapad"); MobilePhone phone = SimpleFactory.NewMobilePhone("Galaxy"); Televisor televisor = SimpleFactory.NewTelevisor("LG"); Console.WriteLine(laptop.GetBrand()); Console.WriteLine(phone.GetBrand()); Console.WriteLine(televisor.GetBrand()); Console.ReadKey(); }
static void Main(string[] args) { SchoolUser user = null; user = SimpleFactory.GetSchoolUser("Patercia", "Patercia"); Console.WriteLine("校长登陆"); user.Show(); user = SimpleFactory.GetSchoolUser("Teacher", "Teacher"); Console.WriteLine("教师登陆"); user.Show(); Console.ReadKey(); }
static void Main(string[] args) { Console.WriteLine("*** Simple Factory Pattern Demo.***\n"); IAnimal preferredType = null; SimpleFactory simpleFactory = new SimpleFactory(); #region The code region that can vary based on users preference. /* * Since this part may vary,we're moving the * part to CreateAnimal() in SimpleFactory class. */ preferredType = simpleFactory.CreateAnimal(); #endregion #region The codes that do not change frequently. preferredType.AboutMe(); #endregion Console.ReadKey(); }
public void Demo1() { IProduct product = SimpleFactory.CreateProduct(nameof(ConcreteProductC)); Contract.Assert(product.GetType() == typeof(ConcreteProductC)); }
public void SetFactory(SimpleFactory factory) { this.factory = factory; }
public Order(SimpleFactory simpleFactory) { SetFactory(simpleFactory); }