Как говорится, заводом является всего лишь абстракцией, где реализация создания объекта намеренно инкапсулированная за открытым интерфейсом завода. Фабрика не обязательно должна быть классом, она не должна быть пакетом - разные языки достигают инкапсуляции состояния и поведенческих данных по-разному (например, рассмотрим закрытие).
функция на языке, который позволяет функции «верхнего уровня», может быть завод, а также:
public Orange growNewOrange(String weight, String size) {
/// ...traditionally not callers concern.
}
Если завод скрывает код создания за способ для вас, чтобы использовать его, не интересуясь себя указанный код создания для каждого созданного объекта, у вас уже есть полезная изоляция (между получением новых объектов и тем, что ими управляет), которая решает проблему, которую был разработан для решения этой проблемы.
Есть заводы, предназначенные для создания и управления объектами одного вида, а затем есть те, которые создают и управляют несколькими видами объектов. Фруктовая фабрика, где вы можете указать конкретный класс фруктов, который вы хотите, по-прежнему соответствует действующей фабричной схеме.
Категоризация заводских реализаций в «типах» выполняется различными авторами ООП и может быть полезна по разным причинам, но это не обязательно для того, чтобы использовать общую идею в ваших интересах.
Немедленно полезный совет будет заключаться в создании кода создания в пакете Java или классе, где задание параметров созданного объекта выполняется для каждого объекта, в то время как логика создания фабричного состояния - например, размер повторно используемого объекта пул и т. д. - создается во время создания фабрики. Пулы объектов являются одним из примеров заводского шаблона на работе.
Можем ли мы увидеть внутреннюю работу трех классов фруктов? –
см. [Шаблоны проектирования: заводская фабрика по заводскому методу] (http://stackoverflow.com/questions/4209791/design-patterns-abstract-factory-vs-factory-method) –