Абстрактный шаблон дизайна фабрики - C # - PullRequest
0 голосов
/ 21 ноября 2011

Я следил за этой хорошей статьей для Шаблон дизайна фабрики :

http://dotnet.dzone.com/articles/design-patterns-c-factory

Я очень хорошо понимаю этот пример. Можете ли вы сделать этот же пример для

Абстрактный шаблон проектирования фабрики ?

Я хочу понять основную концепцию Абстрактный шаблон проектирования фабрики .

Спасибо

Ответы [ 4 ]

1 голос
/ 14 декабря 2016

Простой пример абстрактного шаблона проектирования фабрики в C #:

using System;
using System.IO;

enum TYPE_OPERATION
{
    Design,
    Work
}

//Abstract Factory
abstract class AbstractFactory
{
    public static AbstractFactory PrepareOperation(TYPE_OPERATION type_operation)
    {
        switch (type_operation)
        {
            case TYPE_OPERATION.Design:
                return new DesignTeam();

            case TYPE_OPERATION.Work:
                return new WorkTeam();
            default:
                throw new NotImplementedException();
        }
    }

    public abstract void PerformOperation();
}

class DesignTeam : AbstractFactory
{
    public override void PerformOperation()
    {
        Designers m = new Designers();
        m.Designing();
    }
}

class WorkTeam : AbstractFactory
{
    public override void PerformOperation()
    {
        Workers k = new Workers();
        k.Working();
    }
}

// The concrete class
class Designers
{
    public void Designing()
    {
        Console.WriteLine("The Design Team has completed its work!");
    }
}

// The concrete class
class Workers 
{
    public  void Working()
    {
        Console.WriteLine("The Work Team has finished its work!");
    }
}
public class Client
{   
    public static void Main(String[] args)
    {
        AbstractFactory factory = AbstractFactory.PrepareOperation(TYPE_OPERATION.Design);
        factory.PerformOperation();

        factory = AbstractFactory.PrepareOperation(TYPE_OPERATION.Work);
        factory.PerformOperation();

        Console.ReadLine();
    }
 }
/* output:
 The Design Team has completed its work!
 The Work Team has finished its work!
*/
1 голос
/ 21 ноября 2011

Конструкция commom - это абстрактная фабрика , которая создает компоненты доступа к данным, и вы реализуете каждую фабрику, специфичную для поставщика базы данных или другой системы хранилища.

using System;
namespace DZoneArticles.FactoryDesignPattern
{
    public abstract class EmployeeFactory
    {
         public abstract Employee Create();
    }
    public class DBAFactory : EmployeeFactory
    {
         public override Employee Create() { return new DBA(); }
    }
    public class ManagerFactory : EmployeeFactory
    {
         public override Employee Create() { return new Manager(); }
    }
}

Если вам нужно больше примеров, вы можете посетить: Абстрактный шаблон фабрики в Java с примерами

1 голос
/ 21 ноября 2011

Адаптация из "Прикладных шаблонов Java":

 public interface IEmployee
 {
 }

 public class Developer : IEmployee
 {
 }

 public class Tester : IEmployee
 {
 }

 public interface IManager
 {
 }

 public class HRManager : IManager
 {
 }

 public class ProjectManager : IManager
 {
 }

 public interface IFactory()
 {
      IEmployee CreateEmployee();
      IManager CreateManager();
 }

 public class ConcreteFactory1 : IFactory
 {
      public IEmployee CreateEmployee()
      {
           return new Developer();
      }

      public IManager CreateManager()
      {
           return new HRManager();
      }
 }

 public class ConcreteFactory2 : IFactory
 {
      public IEmployee CreateEmployee()
      {
           return new Tester();
      }

      public IManager CreateManager()
      {
           return new ProjectManager();
      }
 }
1 голос
/ 21 ноября 2011

Абстрактная фабрика - Не тот же пример, но простой для понимания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...