封装以减少耦合
封装允许你对类进行内部更改,而不会影响调用该类的任何代码。这减少了耦合,或者任何给定的类依赖于另一个类的实现。
例如,让我们改变前一个例子中 Angle 类的实现:
public class Angle {
private double angleInDegrees;
public static Angle angleFromDegrees(double degrees){
Angle a = new Angle();
a.angleInDegrees = degrees;
return a;
}
public static Angle angleFromRadians(double radians){
Angle a = new Angle();
a.angleInDegrees = radians*180/Math.PI;
return a;
}
public double getDegrees(){
return angleInDegrees;
}
public double getRadians(){
return angleInDegrees*Math.PI / 180;
}
public void setDegrees(double degrees){
this.angleInDegrees = degrees;
}
public void setRadians(double radians){
this.angleInDegrees = radians*180/Math.PI;
}
private Angle(){}
}
此类的实现已更改,因此它仅存储角度的一个表示,并在需要时计算另一个角度。
但是,实现发生了变化,但界面却没有。如果一个调用类依赖于访问 angleInRadians 方法,则需要将其更改为使用新版本的 Angle
。调用类不应该关心类的内部表示。