Как реализовать и использовать паттерн проектирования «Фабричный метод» (Factory Method) в языке программирования на ваш выбор?

Паттерн проектирования «Фабричный метод» (Factory Method) позволяет создавать объекты без указания конкретного класса создаваемого объекта. Это делается путем делегирования создания объекта одному из подклассов.

Реализация на языке C

Пример на C#:

  1. Интерфейс продукта:
public interface IProduct
{
    void DoWork();
}
  1. Конкретные продукты:
public class ConcreteProductA : IProduct
{
    public void DoWork()
    {
        Console.WriteLine("ConcreteProductA is working.");
    }
}

public class ConcreteProductB : IProduct
{
    public void DoWork()
    {
        Console.WriteLine("ConcreteProductB is working.");
    }
}
  1. Создатель (Creator):
public abstract class Creator
{
    public abstract IProduct FactoryMethod();

    public void AnOperation()
    {
        IProduct product = FactoryMethod();
        product.DoWork();
    }
}
  1. Конкретные создатели:
public class ConcreteCreatorA : Creator
{
    public override IProduct FactoryMethod()
    {
        return new ConcreteProductA();
    }
}

public class ConcreteCreatorB : Creator
{
    public override IProduct FactoryMethod()
    {
        return new ConcreteProductB();
    }
}
  1. Использование:
public class Client
{
    public static void Main(string[] args)
    {
        Creator creatorA = new ConcreteCreatorA();
        creatorA.AnOperation();

        Creator creatorB = new ConcreteCreatorB();
        creatorB.AnOperation();
    }
}

Объяснение:

  1. Интерфейс продукта (IProduct): Определяет интерфейс, который все конкретные продукты должны реализовывать.
  2. Конкретные продукты (ConcreteProductA и ConcreteProductB): Реализуют интерфейс продукта.
  3. Создатель (Creator): Абстрактный класс, который объявляет фабричный метод. Он также содержит метод AnOperation, который вызывает фабричный метод и работает с возвращенным продуктом.
  4. Конкретные создатели (ConcreteCreatorA и ConcreteCreatorB): Реализуют фабричный метод для создания конкретных продуктов.

Этот паттерн позволяет легко добавлять новые типы продуктов без изменения существующего кода создателя, что улучшает расширяемость и поддерживаемость кода.

Закладка Постоянная ссылка.

Обсуждение закрыто.