Как совместить фабрику и закон Деметры? Доброго вечера.
Заюзал в очередной раз абстрактную фабрику, и неожиданно вспомнил, что метод класса не должен обращаться к объектам, которые вернул какой-либо метод. Получается, использовать фабрики - это вынужденное зло, и код с фабриками априори хуже кода, который следует закону Деметры? Ведь даже если я просто верну объект из функции, не вызывая его, данный закон будет нарушать уже другой класс.
Если это вопрос удобства, то что в большинстве случаев объективно лучше игнорировать? Являются ли фабрики почти антипаттерном, которых нужно избегать до последнего? И есть ли решение, позволяющее усидеть на двух стульях?
Заранее спасибо.

21 Авг 2019 в 06:24
151 +1
0
Ответы
1

Здравствуйте!

Фабрики и закон Деметры могут быть совмещены, если вы будете использовать фабрику не внутри методов класса, а вне их, например, в клиентском коде или во вспомогательных классах. Таким образом, объекты, созданные фабрикой, будут передаваться в методы класса как параметры, а не создаваться прямо внутри метода.

Если вы обеспокоены нарушением принципа инкапсуляции объектов, создаваемых фабрикой, вы можете рассмотреть альтернативные подходы, такие как Dependency Injection (DI) или использование IoC (Inversion of Control) контейнеров, которые могут создавать и предоставлять объекты классов без необходимости напрямую обращаться к фабрике.

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

20 Апр в 13:19
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 493 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир