我有一個關於OOP委託設計原則的查詢。我將使用GOF設計模式書中的窗口& Rectangle類示例來解釋我的查詢。委託模式(或OO設計原則)問題
public class Window
{
Rectangle myDelegate;
public void Area()
{
return myDelegate.Area();
}
}
public class Rectangle
{
public int Area()
{
return 2*3;
}
}
我的問題是:矩形(委託)可以引用窗口(父類)。即:
public class Window
{
Rectangle myDelegate;
public int myArea;
public void Area()
{
myDelegate.Area();
}
}
public class Rectangle
{
Window myParent;
public void Area()
{
myParent.myArea = 2 * 3;
}
}
在非平凡的情況下,上面的代碼可以更方便地更新父代的狀態。 這是合乎邏輯還是我在這裏錯過了一些東西?
謝謝!
儘管這裏提出的所有潛在解決方案都是有效的,但對於我的方案而言,此解決方案看起來最適用。我相信zbugs所暗示的是窗口和矩形類共享一個共同的接口,它們用來交換數據(甚至是需要時的行爲)。這種方法的缺點是窗口和矩形之間的緊密耦合。然而,在我的情況下,這是可以的,因爲矩形類除了Window類之外幾乎沒有任何客戶端。所以我會將其標記爲答案。 感謝其他人花時間回答 – rhk98