Соединение и выяснение зависимостей

В настоящее время я изучаю связь и зависимости в Java. Я читал этот учебник и понимаю, что если class1 содержит экземпляр class2 и если вы вызываете метод, как exampleMethod(c2)это считается зависимостью между class1 и class2. Однако я не уверен насчет приведенных ниже примеров. Кто-нибудь может дать мне некоторые разъяснения?

Предполагая, что мы находимся внутри class1 (который содержит class2 c2):

  1. Если class1 вызывает метод, определенный в class2 (c2.aMethod() например), считается ли это зависимостью / связью между class1 и class2?

  2. Звонит c2.someSetterMethod(argument) считать зависимость / связь между class1 и class2?

  3. Звонит c2.repaint() в пределах класса1 считать зависимостью?

2 ответа

Решение

Тот факт, что class1 содержит ссылку на экземпляр class2, достаточно сказать, что class1 зависит от class2. Во всех ваших трех примерах вам нужна ссылка на class2 для вызова его методов. Это только увеличивает потребность в зависимости в вашем классе 1, но не сама зависимость.

Пожалуйста, прочитайте http://depfind.sourceforge.net/Manual.html, как упомянуто в моем ответе на ваш предыдущий вопрос: /questions/19498962/umenshaet-li-peredacha-dannyih-agregatnyij-obekt-vmesto-dlinnogo-spiska-argumentov/19498963#19498963.

  1. Да.
  2. Да.
  3. Да.

Одним из способов уменьшения связи является использование интерфейсов. Таким образом, класс 1 знает только об интерфейсе и не связан конкретно с классом 2. И на самом деле, любой класс, который реализует интерфейс, может быть использован вместо класса 2 и класса 1, но все равно будет удовлетворен.

Другие вопросы по тегам