Java 硬编码方法,仅存在于超类中被重写
最近我不得不学习一门课,它的方法和这门课相似Java 硬编码方法,仅存在于超类中被重写,java,design-patterns,Java,Design Patterns,最近我不得不学习一门课,它的方法和这门课相似 public boolean checkSomeThing() { return true; } 此函数在另一个执行复杂实例化的私有函数体内使用。起初我认为它可能是一个复活节彩蛋,但后来我在方法checkSomething()上读到了javadoc,上面说: “重写此函数以更改某些内容blabla” 读完这篇文章后,我意识到到底发生了什么。这是一种非常优雅和简洁的方式,可以访问一段代码中无法访问的变量 所以我的问题是这个把戏的名字,模式或者叫什么?
public boolean checkSomeThing() { return true; }
此函数在另一个执行复杂实例化的私有函数体内使用。起初我认为它可能是一个复活节彩蛋,但后来我在方法checkSomething()上读到了javadoc,上面说:
“重写此函数以更改某些内容blabla”
读完这篇文章后,我意识到到底发生了什么。这是一种非常优雅和简洁的方式,可以访问一段代码中无法访问的变量
所以我的问题是这个把戏的名字,模式或者叫什么?如果说我正在构建的类打算进行扩展,那么使用它是一件好事吗?我会说您的意思是“模板方法模式”
也许有一个建议:
如果每个子类都必须重写方法,那么它应该是抽象的。我想你有点误解了重写方法?为什么?请详细说明。@EvdzhanMustafa至于这是一项好技术;像所有的技术一样,在适当的环境下谨慎使用,这是非常有用的。过度使用它,或者在没有必要的地方,它只是噪音。它的缺点是,在维护过程中,该方法的过度隐藏可能会对代码的读者造成影响。@OliverWatkins:这可以用来破坏Liskov替换,但它本身不会破坏它。正如克里斯所说,任何技术都应该只在有意义的地方应用。这是一种非常常用的模式,用于为派生类提供可扩展性。否则,这些类将需要覆盖更多的逻辑并复制基类的代码,这将破坏许多其他原则(包括Liskov替换)。我收回我说的话。