我有一个简单的设计问题。我不确定如何在可伸缩性和面向对象方面设计以下“情况”。
interface IA {
void update();
}
class A implements IA {
public void update(){
updateInX();
updateInY();
}
private void updateInX(){
...
}
private void updateInX(){
...
}
}
冗余(updateInX(),updateInY())似乎是一个糟糕的设计,但我不知道如何改进它。我很感激你的帮助!
答案 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();
}
这将使子对象只实现必要的方法,并将计算保留在基类上。