5 -模板方法模式

    技术2025-10-20  15

    文章目录

    1.例子2. 定义3. 应用3.1 优点3.2 缺点3.3 场景 4. 扩展 参考:设计模式之禅

    1.例子

    public abstract class HummerModel { public abstract void start(); public abstract void stop(); public abstract void engineBoom(); public abstract void alarm(); public void run() { this.start(); this.engineBoom(); this.alarm(); this.stop(); } } public class HummerH1Model extends HummerModel { @Override public void start() { System.out.println("H1 model start"); } @Override public void stop() { System.out.println("H1 model stop"); } @Override public void engineBoom() { System.out.println("H1 model engineBoom"); } @Override public void alarm() { System.out.println("H1 model alarm"); } } public class HummerH2Model extends HummerModel { @Override public void start() { System.out.println("H2 model start"); } @Override public void stop() { System.out.println("H2 model stop"); } @Override public void engineBoom() { System.out.println("H2 model engineBoom"); } @Override public void alarm() { System.out.println("H2 model alarm"); } } public class Client { public static void main(String[] args) { HummerH1Model hummerH1Model = new HummerH1Model(); HummerH2Model hummerH2Model = new HummerH2Model(); hummerH1Model.run(); hummerH2Model.run(); } }

    2. 定义

    个人理解:一个算法的实现有固定的步骤,比如上面的run()方法有start,stop,alarm和engineBoom这几个基本方法。在抽象类定义这些基本方法,然后模板方法(run方法)调用这些基本方法。子类继承抽象类,由子类实现基本方法。子类的行为就能影响父类。

    3. 应用

    3.1 优点

    封装不变部分,扩展可变部分:模板方法就是不变部分,基本是可变部分,由不同的子类实现。提取公共代码,便于维护:模板方法在父类中,不会散发到各处。行为父类控制,子类实现。

    3.2 缺点

    模板方法模式与一般的模式不同,子类的实现影响父类,在复杂的项目,带来阅读的困难。

    3.3 场景

    多个子类共有的方法,逻辑基本相同;重要,复杂的算法,可以把核心算法封装模板方法,基本方法的细节由各个子类实现。

    4. 扩展

    Processed: 0.012, SQL: 9