Свободная связь может быть достигнута любым другим способом, а не с использованием ссылочной переменной родительского класса, как правило, не в моем коде?
Тесная связь - это когда группа классов сильно зависит друг от друга.
class C {
A a;
C(B b) {
a = b;
}
}
Interface A {
}
class B implements A {
}
В моем коде я принимаю объект класса через ссылку класса B, а не через родительский интерфейс A.
Мой код слабо или тесно связан?
Слабое сцепление достигается с помощью конструкции, которая способствует единоличной ответственности и разделению интересов.
использование ссылки на родительский класс или интерфейс делает код более гибким для принятия объекта любого дочернего класса, но как это способствует единоличной ответственности.
Разве слабая связь может быть достигнута любым другим способом, а не с использованием ссылочной переменной родительского класса, в любом случае, специально не в моем коде?
2 ответа
Это кажется домашним заданием, но вот мой ответ.
Код тесно связан, потому что конструктор для C
зависит от B
вместо интерфейса A
, Если бы вы хотели отделить C
от B
, вы бы приняли экземпляр A
вместо B
,
Слабосвязанный код
class C {
A a;
C(A a) {
this.a = a;
}
}
ANS1:
Тесная связь - это когда группа классов сильно зависит друг от друга.
Ваш код тесно связан, потому что:
Потому что конструктор для C зависит от B, и вы храните объект B в типе A.
Ans2:
Слабое сцепление достигается с помощью конструкции, которая способствует единоличной ответственности и разделению интересов.
Интерфейсы являются мощным инструментом для разделения. Классы могут взаимодействовать через интерфейсы, а не через другие конкретные классы, и любой класс может находиться на другом конце этого взаимодействия, просто реализуя интерфейс.
Пример:
class C {
A a;
C(A b) { // use interface A rather Class B
a = b;
}
}