创建多个对象,使这些对象形成一条链,并且沿着这条链传递请求,直到链上的某一个对象决定处理此请求。
责任链+模板方法
回头看看上面的代码,抽象类中定义了几个方法,一个是final修饰的handleMessage,一个是抽象方法report,还有一个是setNextHandler。这刚好是模板方法模式中的三个基本方法,分别是具体方法(抽象类声明并实现,子类不实现)、抽象方法(抽象类声明,子类必须实现)、钩子方法(抽象类声明并实现,子类可扩展)。handleMessage方法加了final修饰,子类不可重写,而handleMessage正是把传递请求工作交给父类Handler,子类不需要处理传递的工作。而report则是抽象方法,子类必须重写该方法,子类处理请求的业务逻辑。setNextHandler是钩子方法,在这里我们并没有实现。
作者:Jet啟思
链接:https://juejin.im/post/5a126b146fb9a0450c490201
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。