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

导读:本篇文章讲解 24种设计模式-模板方法设计模式,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

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、运行结果

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/87539.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!