当前位置: 首页 > news >正文

设计模式(13):模板方法模式

场景:

  • 实现一个功能时,整体步骤很固定,但是,某些部分易变。易变部分可以抽象出来,供子类实现。

开发中常见的场景

  • 非常繁琐,各个框架,类库中都有它的影子,比如常见的有:
    • 数据库访问的封装
    • Junit单元测试
    • servlet中关于doGet/doPost方法调用
    • spring框架中各种Template
    • shire中权限认证和授权都用到了模板方法模式。

举例代码实现

  • 场景:银行办理业务:

    • 1.取号;
    • 2.办理业务/取钱/转账/企业/个人…
    • 3.给工作人员评分
  • 代码实现

    • 模板类
public abstract class BankTempLateMethod {//具体方法public void takeNumber(){System.out.println("排队取号。。。。。");}public abstract void transact(); //办理具体的业务     钩子方法//具体方法public void evaluate(){System.out.println("反馈评分。。。。。");}//模板方法public final void process(){takeNumber();transact();evaluate();}
}
    • 子类
public class Sub1BankTemplateMethod extends BankTemplateMethod{@Overrideprotected void transact() {System.out.println("办理取款业务。。。。。");		}
}
public class Sub2BankTemplateMethod extends BankTemplateMethod{@Overrideprotected void transact() {System.out.println("办理存钱业务。。。。。");		}
}
    • 客户调用
/*** 模板方法模式*/
public class App {public static void main(String[] args) {BankTemplateMethod bankTemplateMethod1 = new Sub1BankTemplateMethod();bankTemplateMethod1.process();System.out.println("--------------------------------------------------");BankTemplateMethod bankTemplateMethod2 = new Sub2BankTemplateMethod();bankTemplateMethod2.process();}
}



更多设计模式学习:

          设计模式(1):介绍
          设计模式(2):单例模式
          设计模式(3):工厂模式
          设计模式(4):建造者模式
          设计模式(5):原型模式
          设计模式(6):桥接模式
          设计模式(7):装饰器模式
          设计模式(8):组合模式
          设计模式(9):外观模式
          设计模式(10):享元模式
          设计模式(11):适配器模式
          设计模式(12):代理模式
          设计模式持续更新中…

http://www.lryc.cn/news/332467.html

相关文章:

  • 公众号申请上限怎么提升
  • 【算法刷题day16】Leetcode:104.二叉树的最大深度 559.n叉树的最大深度 111.二叉树的最小深度 222.完全二叉树的节点个数
  • 电商技术揭秘一:电商架构设计与核心技术
  • Ubuntu 自启动应用程序的方法
  • Star GAN论文解析
  • 全网最强JavaWeb笔记 | 万字长文爆肝JavaWeb开发——day06_数据库-MySQL-02
  • 数据结构day2--双向链表
  • 蓝桥杯单片机真题实践篇
  • 前端pdf.js将pdf转为图片,尤其适合电子发票打印
  • 第四百四十三回
  • 一分钟快速用上号称“音乐版ChatGPT”的suno AI,适合普通人的超简单教程!
  • 干货!一文读懂:位像素海外仓系统的分销功能
  • 【洛谷】P1449 后缀表达式
  • 【MySQL】聚合函数和分组聚合
  • RDD算子(四)、血缘关系、持久化
  • 51之定时器与中断系统
  • C语言中的内存函数
  • JS继承与原型、原型链
  • C#基础知识总结
  • 机器学习模型——决策树
  • 【HTML】制作一个简单的三角形动态图形
  • Acwing.504 转圈游戏(带取余的快速幂)
  • pair作为unordered_map的key报错
  • Windows提权—数据库提权-mysql提权mssql提权Oracle数据库提权
  • 为什么android创建Fragment推荐用newInstance
  • MyBatis的xml实现方式
  • 大模型prompt技巧——思维链(Chain-of-Thought)
  • 内网穿透的应用-如何在Android Termux上部署MySQL数据库并实现无公网IP远程访问
  • 面试算法-133-区间子数组个数
  • 物联网实战--入门篇之(八)嵌入式-空气净化器