Различия в дизайне фабрики и не фабрики - PullRequest
0 голосов
/ 09 сентября 2010

Существует как абстрактный, так и заводской шаблон. В чем именно разница между ними и почему один должен использоваться поверх другого?

Спасибо

Ответы [ 3 ]

2 голосов
/ 09 сентября 2010

Хороший пример приведен в статье в википедии: http://en.wikipedia.org/wiki/Abstract_factory_pattern

Абстрактная фабрика - это «фабричный интерфейс», который может быть реализован различными бетонными фабриками.

1 голос
/ 09 сентября 2010

Существует как абстрактный, так и фабричный шаблон.

В книге «Банды четырех» говорится о двух шаблонах: Фабрика Метод и Абстрактная фабрика.

Фабричный метод - это просто то, как он звучит, абстрактный метод, используемый для создания объекта:

public interface SomeInterface {
    Foo create(); // factory method
}

public class SomeClass implements SomeInterface {
    Foo create() {
        // the concrete type being constructed is abstracted by the factory method
        return new DerivedFoo();
    }
}

Абстрактная фабрика - это тип , который определяет абстракцию для создания объектов.,В приведенном выше примере SomeInterface является абстрактной фабрикой.

Они не всегда связаны друг с другом.Совершенно верно иметь обычный конкретный класс с некоторой функциональностью, которая также имеет метод фабрики.Абстрактная фабрика говорит, что целью всего класса является создание одного или нескольких объектов.

0 голосов
/ 09 сентября 2010

Если вы ищете хороший краткий справочный сайт по шаблонам проектирования, посмотрите http://www.dofactory.com/Patterns/Patterns.aspx с примерами (используя C #) и краткими пояснениями.

Также, книга Head First Design Patterns(который использует примеры Java) помогает разбить различные шаблоны в удобном для понимания формате.

Я бы порекомендовал эти 2 ресурса всем, кто только начинает исследовать шаблоны проектирования.

...