Может ли кто-нибудь сказать мне, что такое сплоченность и развязка? Я нашел сцепление, но нет развязки в любом месте. Мне нужно узнать их значения.
Любая помощь будет оценена. Спасибо, что ответили.
Может ли кто-нибудь сказать мне, что такое сплоченность и развязка? Я нашел сцепление, но нет развязки в любом месте. Мне нужно узнать их значения.
Любая помощь будет оценена. Спасибо, что ответили.
Эта статья из Аарона очень хороша для понимания, также я бы рекомендовал вам читать maning Spring в действии, они дают очень хорошие примеры того, как spring решает эту проблему, это определенно улучшит ваше понимание этого.
EDIT:
Я пришел к этому в этой великой книге под названием "Растущее объектно-ориентированное программное обеспечение, управляемое тестами":
Сцепление:
Элементы связаны, если изменение один заставляет меняться в другом. Для Например, если два класса наследуются от общий родитель, затем изменение в одном класс может потребовать изменения в Другие. Подумайте о комбинированной аудиосистеме: Он тесно связан, потому что если мы хотите перейти от аналогового к цифровому радио, мы должны перестроить весь система. Если мы соберем систему из отделяется, он будет иметь низкое сцепление и мы могли бы просто заменить получатель. Связанные функции "Loosely" (то есть те, которые имеют низкое сцепление), являются легче поддерживать.
Сплоченность:
Элементы cohesion являются мерой от того, значимая единица. Например, класс что анализ и даты и URL-адресов не когерентные, потому что они не связаны концепции. Подумайте о машине, которая стирает одежду и посуду - ее маловероятно, чтобы сделать так хорошо. другой крайний, класс, который анализирует только пунктуация в URL-адресе вряд ли будет согласованным, потому что не представляет собой целое понятие. к что-нибудь сделать, программист будет должны найти другие синтаксические анализаторы для протокол, хост, ресурс и т.д. Особенности с "высокой" связностью легче поддерживать.
Cohesion - связано с принципом, что класс/метод должен отвечать только за одно: i) нет никаких бродячих методов, которые не входят в инкапсуляцию; метод только делает одно. Высокое/низкое сцепление - это степень, в которой это имеет место.
Связывание - как взаимозависимы разные части системы. например, как и где существуют зависимости. Если два класса обращаются к методам друг с другом, они тесно связаны друг с другом, поскольку изменение одного означает, что нужно изменить другое. Развязка - это процесс создания чего-то, что было тесно связано менее или вообще не было.
Гибкие системы имеют высокую сцепленность и свободную связь.
Для связи эта статья в Википедии должна отвечать на все ваши вопросы. В этой статье обсуждается сплоченность.
"Развязка" - это просто другое название "малое/низкое сцепление".
Итак, эти термины отвечают на эти вопросы:
Сплоченность: Cohesion - это принцип OO, наиболее тесно связанный с тем, что класс разработан с единственной, хорошо ориентированной целью.
Связь: Связывание относится к степени, в которой один класс знает или использует членов другого класса.
Вот мои мысли о сплоченности. Представьте, что есть модуль. Внутри этого модуля у нас есть некоторые задачи. Когда эти задачи сильно связаны друг с другом, мы говорим, что они имеют высокую степень сплоченности. Когда эти задачи не связаны друг с другом, мы говорим, что она имеет низкую сплоченность. Моя лучшая попытка объяснить развязку заключается в том, что развязка - это акт удаления связи.
Низкое сцепление помогает нам достичь высокой сплоченности! Помните, что мы хотим, чтобы наш модуль имел связанные задачи и одну ответственность. Но что такое связь? Сцепление - это степень зависимости от других модулей для достижения единой ответственности за этот модуль. Таким образом, при низкой связи мы говорим, что мы не очень зависим от внешних модулей, поэтому у нас высокая сплоченность.
Однако, если мы имеем много зависимостей от внешних модулей, у нас будет высокая связь и низкое сцепление. Получите это?
Сплоченность - это степень, в которой задачи, выполняемые одним модулем, функционально связаны ". IEEE, 1983" Cohesion - это "клей", который содержит модуль вместе. Его можно рассматривать как тип ассоциации между составными элементами модуля. Как правило, требуется максимальный уровень сплоченности ". Bergland, 1981
Говорят, что программный компонент обладает высокой степенью сцепления, если элементы в этом блоке обладают высокой степенью функциональной связанности. Это означает, что каждый элемент в программном блоке должен быть необходим для достижения этой цели. Соммервиль, 1989
развязка позволяет разделять взаимодействие объектов с классами и наследование на различные уровни абстракции, используемые для полиморфизма, отделять инкапсуляцию, которая является практикой использования повторно используемого кода для предотвращения взаимодействия дискретных модулей кода друг с другом.