Я хочу начать отвечать, сказав, что это совершенно противоположно тому, что вы сказали как «два определения противоречивы».Я собираюсь описать, приведя цитату из системного анализа и проектирования Джона В. Сатцингера в меняющемся мире, ключевые факты книга
Низкая связь часто коррелирует с высокой связностью, инаоборот
Сказав в Монолитном , они просили вас спросить о ТВЕРДЫХ принципалах , что, если вы их примените, вы получитеПроект высокой когезии и слабой связи.
Вот определения:
1. Принцип единой ответственности (SRP)
Определение: Там должно бытьне более одной причины для изменения класса.
Преимущества:
- более сильная сплоченность в классе
- слабая связь между классами зависимостей,
- улучшенная читаемость
- код с меньшей сложностью
- код, более легкий для понимания и поддержки.
2.Принцип открытого-закрытого (OCP)
Определение: Программные объекты (классы, модули, функции и т. Д.) Должны быть открыты для расширения, но закрыты для модификации.
Преимущества:
- слабая связь,
- улучшение читабельности
- снижение риска нарушения существующей функциональности
- Код, поддерживаемый имногоразовый.
- Код более надежный.
3.Принцип подстановки Лискова (LSP)
Определение: Объекты в программе должны заменяться экземплярами их подтипов без изменения правильности этой программы.
Преимущества:
- слабая связь
- Код более пригоден для повторного использования.
- Иерархии классов легко понять.
4,Принцип сегрегации интерфейса (ISP)
Определение: многие клиентские интерфейсы лучше, чем один универсальный интерфейс
Преимущества:
- Отделенная система.
- Код, легко реорганизованный.
5.Принцип обращения зависимостей (DIP)
Определение: Модули высокого уровня не должны зависеть от модулей низкого уровня, скорее оба должны зависеть от абстракции.Абстракция не должна зависеть от деталей;довольно детализация должна зависеть от абстракции.
Преимущества:
- высокая когезия.
- уменьшить муфту.
- кодмногоразовое использование.
Дополнительная информация
Книги
- Полный код Стива Макконнелла
- Чистый код дяди Боба