24种设计模式-模板方法设计模式

简介: 24种设计模式-模板方法设计模式

1、概述


什么是模板方法设计模式?


在模板类的模板方法当中定义核心算法骨架,具体的实现步骤可以延迟到子类当中完成。


模板类通常是一个抽象类,模板类当中的模板方法定义核心算法,这个方法通常是final的(但也可以不是final的)


使用final可以保证子类无法覆盖模板方法的核心算法

模板类当中的抽象方法就是不确定实现的方法,这个不确定怎么实现的事儿交给子类去做。


2、示例代码


①Person.java(模板类)


//Person就是模板方法设计模式当中的模板类
//day方法就是模板方法设计模式当中的模板方法
public abstract class Person{
    //添加了final之后,此方法不能被覆盖,这样核心的算法也可以得到保护
    //模板方法定义核心的算法骨架,具体的实现步骤可以延迟到子类当中去实现
    //核心算法一方面是得到了保护,不能被改变,另一方面就是算法得到了重复使用
    //另一方面是的得到了复用,以为算法中某些步骤的代码是固定的。这些固定的代码不会随着子类的变化而变化
    //这一部分代码可以写到模板类当中
    public final void day(){
        qiChuang();
        xiShu();
        chiZaoFang();
        doSome();
        shuiJiao();
    }
    public void qiChuang(){
        System.out.println("起床");
    }
    public void xiShu(){
        System.out.println("洗漱");
    }
    public void chiZaoFang(){
        System.out.println("吃早饭");
    }
    public abstract void doSome();
    public void shuiJiao(){
        System.out.println("睡觉");
    }
}


②Student.java


public class Student extends Person{
    @Override
    public void doSome(){
        System.out.println("学生去上学!");
    }
}


③Teacher.java


public class Teacher extends Person{
    @Override
    public void doSome(){
        System.out.println("老师去上课!");
    }
}


④Test.java(测试类)


public class Test{
    public static void main(String[] args){
        Student s = new Student();
        s.day();
        System.out.println("=====================================");
        Teacher t = new Teacher();
        t.day();
    }
}


3、运行结果


0a2653c851af460fa595bd959398a8f1.png

相关文章
|
6月前
|
设计模式 算法 Java
模板方法--设计模式
模板方法--设计模式
47 0
|
6月前
|
设计模式 算法 Java
模板方法设计模式(TemplateMethod)
模板方法设计模式(TemplateMethod)
|
设计模式 算法 Java
设计模式系列教程(08) - 模板方法
设计模式系列教程(08) - 模板方法
46 0
|
6月前
|
设计模式 算法 Java
Java一分钟之-设计模式:策略模式与模板方法
【5月更文挑战第17天】本文介绍了策略模式和模板方法模式,两种行为设计模式用于处理算法变化和代码复用。策略模式封装不同算法,允许客户独立于具体策略进行选择,但需注意选择复杂度和过度设计。模板方法模式定义算法骨架,延迟部分步骤给子类实现,但过度抽象或滥用继承可能导致问题。代码示例展示了两种模式的应用。根据场景选择合适模式,以保持代码清晰和可维护。
109 1
|
5月前
|
设计模式 算法
模板方法-大话设计模式
模板方法-大话设计模式
|
5月前
|
设计模式 存储 Java
JavaSE——面向对象高级二(2/4)-final关键字、常量、抽象类(认识抽象类、抽象类的好处、应用场景-模板方法设计模式)
JavaSE——面向对象高级二(2/4)-final关键字、常量、抽象类(认识抽象类、抽象类的好处、应用场景-模板方法设计模式)
26 0
|
设计模式 SQL 数据库
淘东电商项目(61) -聚合支付(基于模板方法设计模式管理支付回调)
淘东电商项目(61) -聚合支付(基于模板方法设计模式管理支付回调)
81 0
|
6月前
|
设计模式 算法 Java
【设计模式】springboot3项目整合模板方法深入理解设计模式之模板方法(Template Method)
【设计模式】springboot3项目整合模板方法深入理解设计模式之模板方法(Template Method)
|
6月前
|
设计模式 算法
设计模式之模板方法
设计模式之模板方法
|
设计模式 SQL 数据库
淘东电商项目(62) -聚合支付(基于模板方法设计模式管理支付回调-支付宝)
淘东电商项目(62) -聚合支付(基于模板方法设计模式管理支付回调-支付宝)
62 0