Недавно я сдал экзамен по принципам и шаблонам проектирования, и один из вопросов на экзамене был следующим: «Иногда улучшение сплоченности программы может ухудшить сцепление, приведите пример».
Из того, что я понимаюСплоченность - это то, насколько класс / модуль сосредоточен на исправлении проблемы, которую он создал, чтобы исправить, или, что еще лучше, насколько хорошо он выполняет свою работу.Делает ли он работу, которую не должен делать?Затем переместите эту часть в другой класс / модуль.
Связь - это уровень зависимости между многими классами / модулями.Это означает, что хороший класс / модуль будет работать независимо от того, вносим ли мы серьезные изменения в другой модуль / класс.
Примером, который я использовал, чтобы объяснить это себе, является следующий пример: работа бармена заключается в том, чтобы сделатькофе и другие напитки.Хороший бармен должен выполнять свою работу, которая делает указанный кофе, и это повышает его сплоченность, но если он начинает мыть пол и обслуживает клиентов, он отрывается от своей работы, и, следовательно, сплоченность теряется.Хороший бармен также не должен подвергаться влиянию других сотрудников, а это означает, что его связь невелика.Другими словами, если уборщица не появляется на работе однажды утром, его работа не должна быть затронута.
Так что, если мое понимание верно, это означает, что увеличение сплоченности не должно оказывать негативного влияния на сцепление,Точно так же, как если бы веление бармену сосредоточиться на кофе больше, это не сделает его более зависимым от уборщицы.
Я что-то упустил?Мое понимание сплоченности / сцепления неверно?Извините за долгое чтение!