封裝以減少耦合
封裝允許你對類進行內部更改,而不會影響呼叫該類的任何程式碼。這減少了耦合,或者任何給定的類依賴於另一個類的實現。
例如,讓我們改變前一個例子中 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
。呼叫類不應該關心類的內部表示。