2015-05-13 1 views
0

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

class C { 
    A a; 

    C(B b) { 
     a = b; 
    } 
} 

Interface A { 
} 

class B implements A { 
} 

В моем коде я принимаю объект класса через ссылки класса B не родительского интерфейса А.

  1. Является ли мой код свободно или плотно связаны?

    Свободное сцепление достигается посредством конструкции, которая способствует устранению одной ответственности и разделению вопросов.

  2. , используя ссылку родительского класса или интерфейса, сделать код более гибким, чтобы принять объект любого дочернего класса, но как он способствует единой ответственности.

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

+1

О Гоша, форматирование. – screenmutt

+0

Почему бы не прочитать документацию в первую очередь? См. Https://en.wikipedia.org/wiki/Loose_coupling – chokdee

+0

@chokdee Я знал, что ссылка на родителя является свободной связью, как в моем коде, но когда я принимаю объект, это тот же класс, почему я был смущенный. –

ответ

5

Это кажется домашним заданием, но вот мой ответ.

Код плотно связан, потому что конструктор для C зависит от B вместо интерфейса A. Если вы хотите разделить C от B, вы бы приняли экземпляр A вместо B.

слабосвязанных код

class C { 
    A a; 

    C(A a) { 
     this.a = a; 
    } 
} 
+0

Я не могу сделать редактирование, потому что он слишком мал, но аргумент конструктору C должен использовать нижний регистр «a» для имени. –

+0

Спасибо, ребята. Толстый потрогал это. – screenmutt

+0

, поскольку Sumit Singh говорит: «Свободная связь достигается посредством конструкции, которая способствует единоличной ответственности и разделению интересов. Моя точка зрения заключается в использовании ссылки на родительский класс или интерфейс, чтобы сделать код более гибким, чтобы принять любой объект дочернего класса, но как это сделать это способствует единой ответственности. –

1

ANS1:

Плотно муфта, когда группа классов сильно зависят друг от друга.

Ваш код плотно соединен, потому что:

Поскольку конструктор для C зависит от B, и вы храните объект B в типа А.

Ans2:

Свободное сцепление достигается посредством конструкции, которая способствует единоличной и разделенной заботе.

Интерфейсы - это мощный инструмент для развязки. Классы могут связываться через интерфейсы, а не с другими конкретными классами, и любой класс может быть на другом конце этого сообщения просто путем реализации интерфейса.

Пример:

class C { 
    A a; 

    C(A b) { // use interface A rather Class B 
     a = b; 
    } 
} 
+0

Точно источник всех путаниц: как использование ссылочной переменной родительского класса делало его одной ответственностью и разделение проблем –

+0

@ dubey-theHarcourtians То, где интерфейсы входят в картину, используйте интерфейс ex A в своем коде, используя только конкретные классы, поэтому что реализация может быть разной. –

+0

, используя ссылку родительского класса или интерфейса, сделать код более гибким, чтобы принять объект любого дочернего класса, но как он способствует единой ответственности и разделению проблем. –

Смежные вопросы