钩子方法源于设计模式中模板方法模式,模板方法模式中分为两大类:模版方法和基本方法,而基本方法又分为:抽象方法,具体方法,钩子方法。
当然这里不细说模板方法模式,对于钩子方法,是对于抽象方法或者接口中定义的方法的一个空实现,在实际中的应用,比如说有一个接口,这个接口里有7个方法,而你只想用其中一个方法,那么这时,你可以写一个抽象类实现这个接口,在这个抽象类里将你要用的那个方法设置为abstract,其它方法进行空实现,然后你再继承这个抽象类,就不需要实现其它不用的方法,这就是钩子方法的作用。这些方法孜孜不倦追求的永远是调用者和被调用者之间的解耦。- public class Algorithm {
- public void templateMethod() {
- :
- .
- hookMethod();
- .
- :
- }
- public void hookMethod() {
- // default implementation
- }
- }
- public class RefinedAlgorithm extends Algorithm {
- public void hookMethod() {
- // refined implementation
- }
- }