将对象作为参数传递是否与将其存储在字段中的耦合级别相同?

问题描述

class ConcreteObserver implements Observer {
    String text;

    public void actualize(Subject subject) {
        this.text = subject.getState();
    }
}

换句话说,上面的代码是否像我这样做一样使我的 Subject 耦合到 Observer

class ConcreteObserver implements Observer {
    String text;
    Subject subject;

    public void actualize() {
        this.text = subject.getState();
    }
}

解决方法

以下所有关系都算作耦合:

  • 协会
  • 聚合
  • 依赖
  • 概括

所以 ConcreteObserver 在这两种情况下都耦合到 Subject。 (并且在问题 SubjectObserver 的耦合中的陈述无话可说)

第二种情况将父ObserverSubject解耦, 但 IMO 显式依赖比用隐式伪造作用域要好。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...