任何人都可以解释什么是内容耦合,以及如何在以下代码中发生:
public class Line
{
private Point start, end;
...
public Point getStart() { return start; }
public Point getEnd() { return end; }
}
public class Arch
{
private Line baseline;
...
void slant(int newY)
{
Point theEnd = baseline.getEnd();
theEnd.setLocation(theEnd.getX(),newY);
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢.
当您将一个实例存储在另一个实例中,并且您以非预期或透明的方式从外部实例修改内部实例时,就会发生内容耦合。
在这里,您有一个Line存储在您的Arch实例中的实例;和Line商店两个Point。当您调用 时slant(),它会从 内部Arch获取其中一个s并更改它。因此底层的状态就会改变。PointLinePoint
如果它Point存储在应用程序的其他位置,当它发现它Point已移动时,它可能会感到相当震惊。