JAVA钩子方法+模板方法

模板方法:

写一个抽象类,这个抽象类有多个抽象方法,里面设立一个模板方法,这个模板方法也可以称之为模板算法,设立不同方法的执行顺序,封装业务流程,暴露出去;

模板方法模式的特点很好总结,它将一般性的可复用的行为由基类固化,而把特殊化的行为交由具体的子类来实现。具体来说:

  1. 子类通常不关心全局(比如整个流程、提纲、步骤),而只负责”填空“;”填空“通过实现或重写父类的方法来实现。
  2. 从父类角度,全局性的规范约束掌握在自己手中(完形填空),具体来说通过模板方法来约束,从而能够尽量简化子类的复杂度。父类并不一定是抽象类(聚合接口,然后模板方法里去组织接口方法,延迟实现),模板方法也并不一定是抽象方法(子类重写父类)。

钩子方法:寻找挂载点,比如上面的模板方法,里面的具体方法实现,是暴露给子类,或成员的,子类实现会影响父类的模板算法

简单钩子eg:

public class PlayGame {
    public static void playGame(Game game){
        System.out.println("打开机器");
        System.out.println("打开外挂");
        System.out.println("加速器...");
        //开始游戏
        game.play();//钩子
        System.out.println("存档...");
    }
    public static void main(String[] args){
        playGame(new LOL());
    }
}


class LOL implements Game{
    public void play(){
        System.out.println("开始 LOL ing");
    }
}
class WOW implements Game{
    public void play(){
        System.out.println("开始 WOW ing");
    }
}


/***
 * 创建一个Game接口
 */
public interface Game {
    void play();
}
原文地址:https://www.cnblogs.com/brxHqs/p/9565685.html