19 行为型模式-模板方法模式

这篇具有很好参考价值的文章主要介绍了19 行为型模式-模板方法模式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1 模板方法模式介绍

模板方法模式(template method pattern)原始定义是:在操作中定义算法的框架,将一些步骤推迟到子类中。模板方法让子类在不改变算法结构的情况下重新定义算法的某些步骤。

19 行为型模式-模板方法模式,设计模式,模板方法模式
19 行为型模式-模板方法模式,设计模式,模板方法模式

2 模板方法模式原理

模板方法模式的定位很清楚,就是为了解决算法框架这类特定的问题,同时明确表示需要使用继承的结构。
19 行为型模式-模板方法模式,设计模式,模板方法模式
19 行为型模式-模板方法模式,设计模式,模板方法模式

3 模板方法模式实现

UML类图对应的代码实现

/**
 * 抽象父类
 **/
public abstract class AbstractClassTemplate {

    void step1(String key){
        System.out.println("在模板类中 -> 执行步骤1");
        if(step2(key)){
           step3();
        }else{
            step4();
        }

        step5();
    }

    boolean step2(String key){
        System.out.println("在模板类中 -> 执行步骤2");
        if("x".equals(key)){
            return true;
        }
        return false;
    }

    abstract void step3();

    abstract void step4();

    void step5(){
        System.out.println("在模板类中 -> 执行步骤5");
    }

    void run(String key){
        step1(key);
    }
}
public class ConcreteClassA extends AbstractClassTemplate {

    @Override
    void step3() {
        System.out.println("在子类A中 -> 执行步骤3");
    }

    @Override
    void step4() {
        System.out.println("在子类A中 -> 执行步骤4");
    }
}
public class ConcreteClassB extends AbstractClassTemplate {

    @Override
    void step3() {
        System.out.println("在子类B中 -> 执行步骤3");
    }

    @Override
    void step4() {
        System.out.println("在子类B中 -> 执行步骤4");
    }
}
public class Test01 {

    public static void main(String[] args) {

        AbstractClassTemplate concreteClassA = new ConcreteClassA();
        concreteClassA.run("x");

        System.out.println("================");

        AbstractClassTemplate concreteClassB = new ConcreteClassB();
        concreteClassB.run("");


    }
}
在模板类中 -> 执行步骤1
在模板类中 -> 执行步骤2
在子类A-> 执行步骤 4
在模板类中 -> 执行步骤5
===========
在模板类中 -> 执行步骤1
在模板类中 -> 执行步骤2
在子类B-> 执行步骤 3
在模板类中 -> 执行步骤5
4 模板方法模式应用实例

19 行为型模式-模板方法模式,设计模式,模板方法模式

/**
 * 账户抽象类
 **/
public abstract  class Account {

    //step1 具体方法-验证用户信息是否正确
    public boolean validate(String account,String password){
        System.out.println("账号: " + account + ",密码: " + password);
        if(account.equalsIgnoreCase("tom") && password.equalsIgnoreCase("123456")){
            return true;
        }else{
            return false;
        }
    }

    //step2 抽象方法-计算利息
    public abstract void calculate();

    //step3 具体方法-显示利息
    public void display(){
        System.out.println("显示利息!");
    }

    //模板方法
    public void handle(String account,String password){
        if(!validate(account,password)){
            System.out.println("账户或者密码错误!");
            return;
        }

        calculate();
        display();
    }
}
/**
 * 借款有一个月
 **/
public class LoanOneMonth extends Account {

    @Override
    public void calculate() {
        System.out.println("借款周期30天,利息为借款总额的10%");
    }
}
/**
 * 借款七天
 **/
public class LoanSevenDays extends Account{

    @Override
    public void calculate() {
        System.out.println("借款周期7天,无利息! 仅收取贷款金额的1%的服务费");
    }

    @Override
    public void display() {
        System.out.println("七日借款内无利息!");
    }
}
public class Client {

    public static void main(String[] args) {

        Account a1 = new LoanSevenDays();
        a1.handle("tom","123456");

        System.out.println("===================");
        Account a2 = new LoanOneMonth();
        a2.handle("tom","123456");
    }
}
5 模板方法模式总结

19 行为型模式-模板方法模式,设计模式,模板方法模式
19 行为型模式-模板方法模式,设计模式,模板方法模式
19 行为型模式-模板方法模式,设计模式,模板方法模式文章来源地址https://www.toymoban.com/news/detail-721064.html

到了这里,关于19 行为型模式-模板方法模式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 设计模式行为型——模板模式

    目录 模板模式的定义 模板模式的实现 模板模式角色 模板模式类图 模板模式举例 模板模式代码实现 模板模式的特点 优点 缺点 使用场景 注意事项 实际应用         模板模式(Template Pattern)属于行为型设计模式,又叫模版方法模式(Template Method Pattern),是指定义一个算法

    2024年02月13日
    浏览(35)
  • 【玩转23种Java设计模式】行为型模式篇:模板模式

    软件设计模式(Design pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。 汇总目录链接:【玩转23种Java设计模式】学习目录汇总

    2024年02月16日
    浏览(36)
  • 【设计模式与范式:行为型】58 | 模板模式(上):剖析模板模式在JDK、Servlet、JUnit等中的应用

    上两节课我们学习了第一个行为型设计模式,观察者模式。针对不同的应用场景,我们讲解了不同的实现方式,有同步阻塞、异步非阻塞的实现方式,也有进程内、进程间的实现方式。除此之外,我还带你手把手实现了一个简单的 EventBus 框架。 今天,我们再学习另外一种行

    2024年02月09日
    浏览(80)
  • 深入理解设计模式-行为型之模板(和回调区别联系)

    模板设计模式(Template Design Pattern)是一种行为型设计模式,它定义了一个算法的骨架,将算法的一些步骤延迟到子类中实现。模板设计模式允许 子类在不改变算法结构的情况下重新定义算法的某些步骤。 模板设计模式的核心思想是:将一个算法的 主要结构定义在一个模板

    2024年02月12日
    浏览(36)
  • 设计模式---模板方法模式

            所谓模板方法模式,就是提供一种方法的模板来实现一种规范,其他人可以利用这个模板定义自己的逻辑。         在Java编程中的应用,主要就是通过接口或者抽象类来实现的,抽象类中可以把逻辑函数声明为final类型,表示不能被重写,即不能改变逻辑。在接口中

    2024年04月24日
    浏览(42)
  • 设计模式—模板方法模式

    定义一个操作的流程框架,而将流程中一些步骤延迟到子类中实现。使得子类在不改变流程结构的情况下,重新定义流程中的特定步骤。 主要角色: 抽象类: 负责给出操作流程的轮廓或框架,由模板方法和若干基本方法组成。   1、抽象方法:由抽象类声明,在具体子类中实

    2024年02月10日
    浏览(49)
  • 【设计模式】模板方法模式

    模板方法模式:定义一个操作中的算法骨架(父类),而将一些步骤延迟到子类中。 模板方法使得子类可以不改变一个算法的结构来重定义该算法的 实现一些操作时,整体步骤很固定,但是呢。就是其中一小部分需要改变,这时候可以使用模板方法模式,将容易变的部分抽

    2024年02月08日
    浏览(44)
  • 设计模式——模板方法模式

    模板方法模式(Template Method Pattern)是一种行为型设计模式,它在抽象类中定义了一个算法的框架,并将一些步骤延迟到子类中实现。这种模式使得子类可以在不改变算法结构的情况下重写算法中的某些特定步骤。 抽象模板类(Abstract Template Class): 定义一个操作中的算法骨架

    2024年01月17日
    浏览(45)
  • 设计模式(13):模板方法模式

    实现一个功能时,整体步骤很固定,但是,某些部分易变。易变部分可以抽象出来,供子类实现。 非常繁琐,各个框架,类库中都有它的影子,比如常见的有: 数据库访问的封装 Junit单元测试 servlet中关于doGet/doPost方法调用 spring框架中各种Template shire中权限认证和授权都用到

    2024年04月16日
    浏览(45)
  • 设计模式(7)模板方法模式

    一、定义: 定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。它是一种类行为型模式。

    2024年02月12日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包