避免在不同的上下文中使用相同方法的多个实现

时间:2013-10-21 10:35:39

标签: java oop design-patterns inheritance

我有一个简单的设计问题。我不确定如何在可伸缩性和面向对象方面设计以下“情况”。

interface IA {
  void update();
}

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

    private void updateInX(){
      ...
    }

    private void updateInX(){
      ...
    }
}

冗余(updateInX(),updateInY())似乎是一个糟糕的设计,但我不知道如何改进它。我很感激你的帮助!

1 个答案:

答案 0 :(得分: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();
}

这将使子对象只实现必要的方法,并将计算保留在基类上。