Exordium

В разработке программного обеспечения под связью понимается степень, в которой модули связаны. Этимология этого слова восходит к латинскому языку и означает «соединение одного предмета с другим» или «соединение вместе». Итак, думая о соединении, подумайте о том, как объекты связаны друг с другом .

Наряду с некоторыми другими концепциями, связывание было изобретено в 1968 году как часть структурированного дизайна Ларри Константина. Структурированный дизайн фокусируется на отображении хороших практик программирования, направленных на ремонтопригодность и адаптируемость.

Плотное и неплотное соединение

Сцепление может быть тугим или неплотным - иногда его называют высоким или низким. Модули считаются тесно связанными, когда они сильно зависят друг от друга. Другими словами, у них высокая взаимозависимость. Тесно связанные модули, как правило, имеют тесно связанный поток информации, что приводит к проблемам разработки в будущем, поскольку объекты становятся все более и более зависимыми друг от друга. Один из способов избежать тесной связи - это внедрение зависимостей.

Чтобы поддерживать структурированный дизайн, стремитесь разрабатывать модули, которые слабо связаны. Это гарантирует, что приложения создаются с возможностью масштабирования, а объекты можно использовать повторно, не полагаясь друг на друга. Вот список различных типов сцепления - от самого сильного до самого слабого.

Пример плотного соединения в Swift

Здесь можно увидеть один пример сильной связи:

class Colony {
    var queen: Bee

    init() {
        queen = QueenBee()
    }

    func formColony() {
        queen.startMating()
    }
}

Здесь класс Colony зависит от класса QueenBee. Он зависит от класса QueenBee, потому что напрямую связан с ним в инициализаторе. Из-за того, как эти два объекта взаимодействуют, они считаются тесно связанными. Если внутренняя работа класса QueenBee изменится, это изменит способ работы класса Colony. Подобное связывание объектов неэффективно, потому что их можно использовать независимо.

Ситуация сильной связи, показанная выше, может быть исправлена ​​путем добавления инициализатора к классу Colony, передачи объекта Bee в качестве параметра и назначения переменной Queen из инициализатора.

class Colony {
    var queen: Bee

    init(queen: Bee) {
        self.queen = queen
    }

    func formColony() {
        queen.startMating()
    }
}

Приведенный выше код разделяет взаимозависимость объектов. Позволяет использовать их независимо друг от друга. Когда код разработан, как описано здесь, он дополняет структурный дизайн программного приложения. Размышляя о структурном проектировании, программисты намеренно создают программное обеспечение эффективным и масштабируемым образом.

Связь неизбежна при разработке программного обеспечения. Имеет значение тип и уровень связи. В приведенном выше примере мы видим связывание содержимого, что означает, что один объект может изменять данные другого объекта. Другой объект зависит от первого объекта. (Чтобы подробнее разобраться в типах сцепления, перейдите к этой статье по данной теме).

Вывод

При разработке модулей в программных приложениях очень важно подумать о том, как они связаны. Если модули не будут спроектированы разумно и эффективно, приложение будет полно спагетти-кода и не сможет масштабироваться.

И какой смысл в создании программного обеспечения, которое не масштабируется?