2013-10-21 46 views
0

我有一個簡單的設計問題。我不確定如何設計關於可伸縮性和麪向對象的以下「情況」。 (updateInX(),updateInY())似乎是一個糟糕的設計,但我不知道如何改進它。我會感謝您的幫助!在不同的上下文中避免同一方法的多個實現

+3

這並不完全清楚你在問什麼。你是說你不喜歡不斷重寫'updateInX/Y()'? – christopher

+0

@Chris。究竟! X和Y是例子。我可以有A,B,C ... X,Y,Z等。 – uccie

回答

2

此問題可以使用Template method design pattern解決。您將基本定義包含抽象方法的抽象類,它必須被覆蓋,並將計算本身留在抽象類上。例如

public abstract class Something { 

    public void update(){ 
     updateInX(); 
     updateInY(); 
     printResult(); 
    } 

    private void printResult() { 
     //print 
    } 

    protected abstract void updateInX(); 
    protected abstract void updateInX(); 
} 

這將使一個子對象只實現必要的方法並將計算留在基類上。

+0

明天我會試試(模板方法設計模式)並接受你的答案。謝謝! – uccie

+0

這似乎是一個非常好的解決方案。好工作。 +1 – christopher

+0

@Chris:謝謝:-) –

相關問題