我有一个简单的设计问题。我不确定如何在可扩展性和面向对象方面设计以下“情况”。
interface IA {
void update();
}
class A implements IA {
public void update(){
updateInX();
updateInY();
}
private void updateInX(){
...
}
private void updateInX(){
...
}
}
冗余(updateInX(),updateInY())似乎是一个糟糕的设计,但我不知道如何改进它。我将感谢您的帮助!
最佳答案
这个问题可以使用 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();
}
这将使子对象仅实现必要的方法,并将计算留给基类。
关于java - 避免在不同上下文中多次实现同一方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19492194/