钩子方法源于设计模式中模板方法模式,模板方法模式中分为两大类:模版方法和基本方法,而基本方法又分为:抽象方法,具体方法,钩子方法。

当然这里不细说模板方法模式,对于钩子方法,是对于抽象方法或者接口中定义的方法的一个空实现,在实际中的应用,比如说有一个接口,这个接口里有7个方法,而你只想用其中一个方法,那么这时,你可以写一个抽象类实现这个接口,在这个抽象类里将你要用的那个方法设置为abstract,其它方法进行空实现,然后你再继承这个抽象类,就不需要实现其它不用的方法,这就是钩子方法的作用。这些方法孜孜不倦追求的永远是调用者和被调用者之间的解耦。
 

 
  1. public class Algorithm {    
  2.     public void templateMethod() {    
  3.             :    
  4.             .    
  5.         hookMethod();    
  6.             .    
  7.             :    
  8.     }    
  9.     
  10.     public void hookMethod() {    
  11.         // default implementation    
  12.     }    
  13. }  
  14.     
  15. public class RefinedAlgorithm extends Algorithm {    
  16.     public void hookMethod() {    
  17.         // refined implementation    
  18.     }    
  19. }