设计模式-行为型-模板模式

1 定义

  • 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中去。
  • 使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

2 UML

3 代码实现

抽象模板类

public abstract class AbstractClass {

    public   void methondOne(){
        System.out.println("方法1");
    }
    public   void methondTwo(){
        System.out.println("方法2");
    }
    public final void TemplateMethod(){
        methondOne();
        methondTwo();
    }

}

**具体实现类A

public class ConcreteClass extends AbstractClass {

    @Override
    public   void methondOne(){
        System.out.println("具体方法1");
    }
    @Override
    public   void methondTwo(){
        System.out.println("具体方法2");
    }
}

具体实现类B

public class ConcreteClassB extends AbstractClass {

    @Override
    public   void methondOne(){
        System.out.println("具体B方法1");
    }
    @Override
    public   void methondTwo(){
        System.out.println("具体B方法2");
    }
}

测试类**

public class Main {



    public static void main(String[] args){
        AbstractClass abstractClass;
        abstractClass=new ConcreteClass();
        abstractClass.TemplateMethod();

        abstractClass=new ConcreteClassB();
        abstractClass.TemplateMethod();
    }
}

4 总结

4.1 优点:

  1. 封装不变部分,扩展可变部分。
  2. 提取公共代码,便于维护。
  3. 行为由父类控制,子类实现。

4.2 缺点:

  1. 每一个不同的实现都需要一个子类来实现,导致类的个数增加,使得系统更加庞大。

4.3 使用场景:

  1. 有多个子类共有的方法,且逻辑相同。
  2. 重要的、复杂的方法,可以考虑作为模板方法。

注意事项:为防止恶意操作,一般模板方法都加上 final 关键词。

posted @   快乐的搬砖IT小民工  阅读(19)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示