Фабрика против Абстрактного Фабричного Дизайна - PullRequest
0 голосов
/ 20 июня 2011

Я смотрел на шаблон проектирования, но запутался между Factory и Abstract Factory Pattern. Кто-нибудь, пожалуйста, объясните различия, когда следовать какой модели.

Thanx

Ответы [ 4 ]

8 голосов
/ 20 июня 2011

An Абстрактная фабрика предназначена для создания групп связанных объектов .Интерфейс абстрактной фабрики обычно содержит несколько фабричных методов , по одному для каждого типа создаваемого объекта.

Вот пример Абстрактной фабрики :

public abstract class AnimalFactory
{
    public abstract Animal CreateFish();
    public abstract Animal CreateBird();
    public abstract Animal CreateMammal();
}

public class AfricanAnimalFactory : AnimalFactory
{
    public override Animal CreateFish()
    {
        return new Reedfish();
    }

    public override Animal CreateBird();
    {
        return new Flamingo();
    }

    public override Animal CreateMammal();
    {
        return new Lion();
    }
}

Связанные ресурсы:

5 голосов
/ 20 июня 2011

Фабричный шаблон «Определите интерфейс для создания объекта, но пусть подклассы решают, какой класс создать экземпляр. Метод Factory позволяет классу отложить создание экземпляра для подклассов».

Где в качестве абстрактного фабричного шаблона «Предоставить интерфейс для создания семейств связанных или зависимых объектов без указания их конкретных классов».

Вы можете думать об абстрактном образце как о фабрике фабрик. Как сказал @deadalnix, он позволяет вам выбрать правильную фабрику. для более подробной информации, прочитайте следующие ссылки:

  1. Заводской шаблон в Википедии
  2. Абстрактный шаблон фабрики в Википедии

Шаблон Factory Method - это метод класса, используемый для построения другие случаи. Вы можете реализовать фабричный метод практически на любом класс, который оказывается удобным в то время.

Шаблон Abstract Factory - это создание класса, который имеет ничего (представляющего интерес), кроме фабричного метода (ов) на нем. Используйте абстрактную фабрику, когда вам нужно создать набор различных, но совпадающих объектов , или если акт управления созданием объекта поднимается до точки бытия основная функция класса.

2 голосов
/ 20 июня 2011

Абстрактная фабрика ничего не строит. Он просто выбирает правильную фабрику и заставляет ее что-то строить.

Снаружи это выглядит как стандартная фабрика и может использоваться таким же образом.

Позволяет построить объект с несколькими этапами процесса.

0 голосов
/ 15 января 2018

Пример из реальной жизни. (Легко запомнить)

Завод

Представьте, что вы строите дом и подходите к плотнику за дверью. Вы даете размер двери и ваши требования, и он построит дверь для вас. В этом случае плотник представляет собой фабрику дверей. Ваши спецификации являются входными данными для фабрики, а дверь является выходом или продуктом от фабрики.

Абстрактная фабрика

Теперь рассмотрим тот же пример двери. Вы можете пойти к плотнику, или вы можете пойти в магазин пластиковых дверей или магазин ПВХ. Все они являются дверными фабриками. Исходя из ситуации, вы решаете, к какой фабрике вам нужно подходить. Это как Абстрактная Фабрика.

Для более подробной информации

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