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

这个问题可以使用模板方法设计模式来解决。您将基本上定义包含抽象方法的抽象类,这些抽象方法必须被覆盖,并将计算本身留在抽象类上。例如

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 回答