• 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();
    }
  • 相关阅读:
    算法学习:二分法从入门到精通
    TypeScript筑基笔记一:Visual Studio Code 创建Typescript文件和实时监控
    LeetCode 92. 反转链表 II
    LeetCode 1525. 字符串的好分割数目
    字节跳动-people后台一面面经
    LeetCode 117. 填充每个节点的下一个右侧节点指针 II
    LeetCode 1529. 灯泡开关 IV
    LeetCode 165. 比较版本号
    LeetCode 312. 戳气球
    LeetCode 605. 种花问题
  • 原文地址:https://www.cnblogs.com/brxHqs/p/9565685.html
Copyright © 2020-2023  润新知