Java 空方法是否破坏了模板方法模式的结构?
在模板方法模式中,我们有一个抽象定义的超类。我们有具体的类来扩展这个类 假设我们向模板方法添加了一个新函数,并在某些子类中重写它(仅用于某些类)。我们在其他类中将这个新方法重写为空(函数没有主体) 此操作是否算作代码重复Java 空方法是否破坏了模板方法模式的结构?,java,oop,design-patterns,template-method-pattern,Java,Oop,Design Patterns,Template Method Pattern,在模板方法模式中,我们有一个抽象定义的超类。我们有具体的类来扩展这个类 假设我们向模板方法添加了一个新函数,并在某些子类中重写它(仅用于某些类)。我们在其他类中将这个新方法重写为空(函数没有主体) 此操作是否算作代码重复 public void template(){ doX(); doY(); doZ(); } public void template(){ doX(); doY(); doA(); doZ(); } 例如,在模板方
public void template(){
doX();
doY();
doZ();
}
public void template(){
doX();
doY();
doA();
doZ();
}
例如,在模板方法中,我们有一个新函数doA()(我想使用doA()作为钩子方法)。我只想在Class1中以及doZ()和doY()之间使用此函数
如果我将此函数添加到模板方法并在Class2 empty中重写此函数。这算是代码重复吗
public void template(){
doX();
doY();
doZ();
}
public void template(){
doX();
doY();
doA();
doZ();
}
绝对不是。您可以从这本书中发现,模板方法模式中有两种类型的方法:
- 抽象方法,它没有实现体,但等待子类重写它
- hook方法,它只是一个空方法,这意味着您可以在需要时实现它,但它不是必需的