Связь, сплоченность и закон Деметры

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

Плохо.

Решение было бы для класса, о котором вы знаете, по сути, выставить простые оболочки, которые делегируют ответственность объекту, с которым он связан.

Это хорошо.

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

Плохо.

Действительно ли это приводит к снижению сплоченности? Это меньшее из двух зол?

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

Ответы на вопрос(6)

Ваш ответ на вопрос