繁体   English   中英

紧耦合的例子没有意义

[英]Tight coupling example not making sense

public class TightlyCoupledClient{
    public static void main(String[] args) {
        TightlyCoupledServer server = new TightlyCoupledServer();
        server.x=5; //should use a setter method
        System.out.println("Value of x: " + server.x);

        }
}

class TightlyCoupledServer {
    public int x = 0;
}

在“ J2SE 5平台的SCJP考试”中指出,如果a和b互相使用,则它们紧密耦合。 它使用上面的示例。 但是TightlyCoupledServer似乎使用了TightlyCoupledClient。 我怎么会错呢?

相互依赖只是将耦合视为紧密时的一种情况。 紧密耦合的另一种情况是所谓的内容耦合当一个模块修改或依赖于另一个模块的内部工作时发生 对类名的了解被认为是TightlyCoupledServer模块内部工作的一部分。 其成员变量的知识也是如此。

添加接口并对其进行编程将减少耦合。 使用实现接口的TightlyCoupledServer实例注入代码将进一步减少耦合。

用简单的话说紧密耦合意味着,一类直接依赖于另一类。 因此,如果一次修改,您将必须测试两个类的功能是否存在行为不匹配。

这里,TightlyCoupledClient直接依赖于TightlyCoupledServer。 因此,如果您为TightlyCoupledServer修改了类似构造函数的内容,则必须对TightlyCoupledClient进行适当的测试。

这些类是相互依赖的,但以一种相当微妙的方式。

显然, TightlyCoupledClient直接依赖于TightlyCoupledServer 就在源代码中。

TightlyCoupledServer在什么意义上取决于TightlyCoupledClient 好吧,服务器类具有一个公共字段,并且大概依赖于它的客户端(不只是TightlyCoupledClient所有客户端)正确地写入此字段。 因此,要验证TightlyCoupledServer的正确性,必须检查系统中所有可能写入此字段的代码。

考虑为TightlyCoupledServer编写单元测试。 我们想要写一些类似的东西:

assertEquals("x should be 5", 5, x);

为使此声明为真, TightlyCoupledClient的代码必须正确并且必须在此声明之前运行。 还有你的依赖性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM