什么是内容耦合?

Lin*_*nda 6 java

任何人都可以解释什么是内容耦合,以及如何在以下代码中发生:

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)

谢谢.

chi*_*ity 5

当您将一个实例存储在另一个实例中,并且您以非预期或透明的方式从外部实例修改内部实例时,就会发生内容耦合。

在这里,您有一个Line存储在您的Arch实例中的实例;和Line商店两个Point。当您调用 时slant(),它会从 内部Arch获取其中一个s并更改它。因此底层的状态就会改变。PointLinePoint

如果它Point存储在应用程序的其他位置,当它发现它Point已移动时,它可能会感到相当震惊。