Слабая связь по сути является косвенной зависимостью между модулями от того, как они могут развиваться.
Как правило, когда есть тесно связанные системы, различные модули / объекты имеют очень специфическое поведение, которое предполагает такое поведение периферийных объектов. Такие объекты связаны / связаны с поведением других модулей, и их нельзя использовать повторно отдельно или в каком-либо другом контексте.
Такие модули, даже если они отвечают за отдельные функции, не могут развиваться независимо или не могут развиваться
Пример:
Допустим, у вас есть 3 объекта
Shape(объект модели) и Canvas(элемент пользовательского интерфейса). Сейчас же
Предположим, что метод shape.draw(Canvas)нарисует объект на плоскости, которая предоставляется плоскостью холста.
Теперь иногда окна частично закрыты и имеют размеры. В таких случаях вышеуказанный метод может просто сделать что-то вроде этого.
shape::draw(Canvas) {
Rect.WindowLeft = Canvas.GetWindowRect.getLeftOffset();
Rect.LeftPixel = Canvas.GetWindowRect.pixels() + Rect.WindowLeft;
.... // like this get all co-ordinates.
draw_instance(Rect); // This will draw the actual shape.
}
По сути, здесь функция draw выбирает прямоугольник, в котором нужно рисовать объекты. Это легко понять (люди могут назвать этот простой ) код. Тем не менее, это чрезвычайно связанный код.
Представьте себе ситуацию:
- Что делать, если механизм холста окон больше не является прямоугольником?
- Что, если есть дополнительные смещения, которые Canvas хранит, которые являются частными ?
- Что если какое-то другое приложение хочет такой же формы, но больше не имеет окна с графическим интерфейсом (например, оно создает изображения и сохраняет их в файлах).
Основной причиной проблемы является то, что объект shape знает и, следовательно, тесно связан с Canvas.
Что желательно, чтобы набор пикселей был задан в форме, где он пишет; shapeне должно быть (даже неявной) знания о том, где пиксели на самом деле написано.