Сцепление - это когда класс (A) зависит (знает, требует, использует) в другом конкретном классе (B). Это означает, что когда вы изменяете открытый член B, который используется A, вы также должны изменить A. Вам нужна низкая связь между типами, чтобы вы могли менять классы без каких-либо побочных эффектов. Обычно соединение «приходит» вместе с плохим инкапсуляцией, поэтому у вас будет информация о знании, которая должна быть частной для B.
Некоторые типы достаточно общие (например, List in C#), и вы можете использовать их напрямую, не опасаясь побочных эффектов , Но независимо от того, какие классы вы определяете для своего собственного приложения, вам нужно знать, что они могут измениться. Поэтому во многих ситуациях вас больше интересует какое-либо поведение (или атрибуты) B, а не A, использующее целое B. В этих случаях лучше извлечь интерфейс (чтобы абстрагировать желаемое поведение), а затем A будет знать только об абстракции, в то время как B будет ее реализовывать. Это позволяет вам иметь более одной конкретной реализации (полезно каждый раз, когда вы имеете дело с вещами, такими как базы данных, сеть, импорт/экспорт и т. Д.), И A не будет знать о B.
Таким образом, A может бессознательно использовать любые из B, C, D и т. д., пока они реализуют интерфейс, и вы можете изменять вещи в B, C, D, если это не нарушает публичный контракт (интерфейс).
В то время как мы обычно хотим, чтобы наши классы были развязаны, но были сплоченными (как и для совместной работы), во многих ситуациях соединение не повредит вам, так как развязка может потребовать больше усилий, чем обеспечить ценность. Разработчик должен определить эти ситуации и принять правильное решение. Тем не менее, это связано с опытом, поэтому, в то же время, просто старайтесь не связывать свои классы слишком много.
спасибо Mike SW, но у меня есть экзамен, и я действительно не понимаю смысл связи между объектом, который является метрикой для измерения связи. Является ли этот номер подходящим между двумя классами? многие ?? Я надеюсь, что вы меня понимаете и жалеете о английских ошибках, если они есть. –
Когда разработчик говорит: «этот класс связан с другим», это значение выше. Ваш показатель CBO, вероятно, просто подсчитывает, сколько классов использует непосредственно определенный класс. – MikeSW