Является ли нарушением закона Деметры возврат callable или пути к классу?

Доброго вечера.
Закон Деметры гласит, что нельзя пользоваться классами, которые были возвращены другими классами. Распространяется ли это на вызываемые (callable) значения, или пути к классу? Является ли класс, генерирующий callable, фабрикой? Ведь по сути, он ничего не собирает и не создает, а лишь отдает ссылки на объекты.

Заранее спасибо.
  • Вопрос задан
  • 594 просмотра
Решения вопроса 1
@galliard
Закон Деметры гласит, что нельзя пользоваться классами, которые были возвращены другими классами. Распространяется ли это на вызываемые (callable) значения, или пути к классу?


Не распространяется на пути к классу. На callable не распространяется, если в теле callable нет ссылки на $this.

Вообще смысл закона в том, что бы ты не мог изменить состояния объекта без взаимодействия с ним.

Является ли класс, генерирующий callable, фабрикой?

Является, если создается новый инстанс callable.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Xilian
Программист 1С, сетевые технологии, SQL
Что такое "путь к классу"?

>>Ведь по сути, он ничего не собирает и не создает, а лишь отдает ссылки на объекты.

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

>>Закон Деметры гласит, что нельзя пользоваться классами, которые были возвращены другими классами.

Запрещено выводить из области видимости mutable объекты, это нарушает принцип инкапсуляции. Если у тебя еще язык с GC у тебя и утечки памяти поедут плодиться.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы