0

簡単なデザインの質問があります。スケーラビリティとオブジェクト指向に関して、次の「状況」を設計する方法がわかりません。

interface IA {
  void update();
}

class A implements IA {
    public void update(){
        updateInX();
        updateInY();
    }

    private void updateInX(){
      ...
    }

    private void updateInX(){
      ...
    }
}

冗長性 (updateInX(), updateInY()) は悪い設計のように思えますが、それを改善する方法がわかりません。助けていただければ幸いです。

4

1 に答える 1

2

この問題はTemplate メソッドの設計パターンを使用して解決できます。基本的に、オーバーライドする必要がある抽象メソッドを含む抽象クラスを定義し、計算自体を抽象クラスに任せます。例えば

public abstract class Something {

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

    private void printResult() {
        //print
    }

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

これにより、子オブジェクトに必要なメソッドのみが実装され、計算は基本クラスに残されます。

于 2013-10-21T10:39:04.723 に答える