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()
}
}
Приведенный выше код разделяет взаимозависимость объектов. Позволяет использовать их независимо друг от друга. Когда код разработан, как описано здесь, он дополняет структурный дизайн программного приложения. Размышляя о структурном проектировании, программисты намеренно создают программное обеспечение эффективным и масштабируемым образом.
Связь неизбежна при разработке программного обеспечения. Имеет значение тип и уровень связи. В приведенном выше примере мы видим связывание содержимого, что означает, что один объект может изменять данные другого объекта. Другой объект зависит от первого объекта. (Чтобы подробнее разобраться в типах сцепления, перейдите к этой статье по данной теме).
Вывод
При разработке модулей в программных приложениях очень важно подумать о том, как они связаны. Если модули не будут спроектированы разумно и эффективно, приложение будет полно спагетти-кода и не сможет масштабироваться.
И какой смысл в создании программного обеспечения, которое не масштабируется?