Абстрактная фабрика (Abstract Factory)¶
Abstract Factory создает не один объект, а семейство совместимых объектов через общий контракт.
Опора на ООП¶
Этот паттерн в первую очередь опирается на полиморфизм, интерфейсы и инкапсуляцию: клиент знает только общий контракт фабрики, а выбор конкретного семейства реализаций спрятан внутри.
Что показывает пример на 1С¶
CommonModules.WindowsFactoryиCommonModules.LinuxFactoryэкспортируют одинаковые методыCreateProcess()иCreateTempFile().DataProcessors.Applicationпринимает фабрику вInit()и потом работает только черезFactory.CreateProcess()иFactory.CreateTempFile().- Клиентский код переключает сразу целое семейство реализаций, а не выбирает каждый объект по отдельности.
Пример¶
Где полезен в 1С¶
- когда нужно подменять набор интеграционных объектов под разную среду;
- когда один и тот же сценарий должен работать с разными поставщиками инфраструктуры;
- когда важно держать совместимость объектов внутри одной "платформы" или режима работы.
Когда паттерн лишний¶
- если семейство реализаций всего одно;
- если меняется только один объект и достаточно
Factory Method; - если клиенту проще прямо создать нужный объект без дополнительного слоя.