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

智能科技 光速东莞网站建设番禺制作网站企业

智能科技 光速东莞网站建设,番禺制作网站企业,小程序注册收费吗,seo的最终目的是?目录 一、 啥是模板方法模式?二、 为什么要用模板方法模式?三、 模板方法模式的实现方式四、 模板方法模式的优缺点五、 模板方法模式的应用场景六、 总结 🌟我的其他文章也讲解的比较有趣😁,如果喜欢博主的讲解方式&a…

在这里插入图片描述

目录

    • 一、 啥是模板方法模式?
    • 二、 为什么要用模板方法模式?
    • 三、 模板方法模式的实现方式
    • 四、 模板方法模式的优缺点
    • 五、 模板方法模式的应用场景
    • 六、 总结

🌟我的其他文章也讲解的比较有趣😁,如果喜欢博主的讲解方式,可以多多支持一下,感谢🤗!
🌟了解享元模式请看: (十 二)趣学设计模式 之 享元模式!
✨更多请看个人主页: 码熔burning

这篇文章带你详细认识一下设计模式中的模版方法模式

一、 啥是模板方法模式?

想象一下,你想要制作一杯咖啡 ☕。 制作咖啡的步骤大致相同:烧水 💧、冲泡咖啡 ☕、倒入杯中 🥛、加入调料 🍬。 但是,不同的咖啡,加入的调料可能不同 (比如:拿铁加牛奶,美式加糖)。

模板方法模式,就是定义一个操作中的算法的骨架,而将一些步骤延迟到子类中! 模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤 🦴。

简单来说,就是定义一个模板,规定了算法的执行流程,具体的实现细节由子类来完成! 📝

  • 你有一系列相似的算法,它们的执行流程基本相同: 就像制作不同口味的咖啡 ☕!
  • 你想让子类可以灵活地定制算法的某些步骤: 就像不同的咖啡可以加入不同的调料 🍬!
  • 你想避免代码重复: 就像你不想在每个咖啡类中都重复编写烧水、冲泡咖啡、倒入杯中的代码 💧☕🥛!

二、 为什么要用模板方法模式?

用模板方法模式,好处多多 👍:

  • 代码复用: 将公共代码提取到父类中,减少代码重复 ♻️!
  • 控制算法流程: 父类控制算法的执行流程,子类只能定制特定的步骤 📝!
  • 提高扩展性: 可以方便地添加新的算法,只需要创建新的子类即可 ➕!
  • 符合开闭原则: 可以在不修改父类代码的情况下,扩展算法的功能 ✅!

三、 模板方法模式的实现方式

模板方法模式主要包含以下几个角色:

  • AbstractClass(抽象类): 定义抽象的模板方法,以及一些具体的辅助方法。 ☕ (比如:咖啡基类)
  • ConcreteClass(具体类): 实现抽象类中的抽象方法,完成算法的特定步骤。 ☕ (比如:拿铁咖啡、美式咖啡)

代码示例:

// 抽象类:咖啡
public abstract class Coffee {// 模板方法:制作咖啡public final void makeCoffee() {boilWater(); // 烧水brewCoffee(); // 冲泡咖啡pourInCup(); // 倒入杯中addCondiments(); // 加入调料}// 具体方法:烧水private void boilWater() {System.out.println("烧水");}// 抽象方法:冲泡咖啡protected abstract void brewCoffee();// 具体方法:倒入杯中private void pourInCup() {System.out.println("倒入杯中");}// 抽象方法:加入调料protected abstract void addCondiments();
}// 具体类:拿铁咖啡
public class LatteCoffee extends Coffee {@Overrideprotected void brewCoffee() {System.out.println("冲泡拿铁咖啡");}@Overrideprotected void addCondiments() {System.out.println("加入牛奶");}
}// 具体类:美式咖啡
public class AmericanCoffee extends Coffee {@Overrideprotected void brewCoffee() {System.out.println("冲泡美式咖啡");}@Overrideprotected void addCondiments() {System.out.println("加入糖");}
}// 客户端
public class Client {public static void main(String[] args) {Coffee latte = new LatteCoffee(); // 创建拿铁咖啡latte.makeCoffee(); // 制作拿铁咖啡System.out.println("---");Coffee american = new AmericanCoffee(); // 创建美式咖啡american.makeCoffee(); // 制作美式咖啡}
}

分析:

  • Coffee 是抽象类,定义了制作咖啡的模板方法 makeCoffee(),以及一些具体的辅助方法 boilWater()pourInCup(),还有一些抽象方法 brewCoffee()addCondiments()
  • LatteCoffeeAmericanCoffee 是具体类,实现了抽象类中的抽象方法,完成了冲泡咖啡和加入调料的特定步骤。

输出结果:

烧水
冲泡拿铁咖啡
倒入杯中
加入牛奶
---
烧水
冲泡美式咖啡
倒入杯中
加入糖

四、 模板方法模式的优缺点

优点:

  • 代码复用 ♻️!
  • 控制算法流程 📝!
  • 提高扩展性 ➕!
  • 符合开闭原则 ✅!

缺点:

  • 增加了系统的复杂度 😫!
  • 抽象类定义了算法的骨架,子类必须遵循这个骨架,灵活性受到限制 ⛓️!
  • 每个不同的实现都需要定义一个子类,导致类的数量增加 📈!

五、 模板方法模式的应用场景

  • 你有一系列相似的算法,它们的执行流程基本相同: 就像制作不同口味的咖啡 ☕!
  • 你想让子类可以灵活地定制算法的某些步骤: 就像不同的咖啡可以加入不同的调料 🍬!
  • 你想避免代码重复: 就像你不想在每个咖啡类中都重复编写烧水、冲泡咖啡、倒入杯中的代码 💧☕🥛!
  • 数据库访问: 数据库访问的流程通常是:建立连接、执行查询、处理结果、关闭连接。 可以使用模板方法模式来定义这个流程,具体的查询语句和结果处理由子类来完成。
  • Servlet处理: Servlet处理请求的流程通常是:接收请求、处理请求、发送响应。 可以使用模板方法模式来定义这个流程,具体的请求处理由子类来完成。

六、 总结

  • 模板方法模式就像定义一个模板,规定了算法的执行流程,具体的实现细节由子类来完成! 📝
  • 主要包含抽象类和具体类两个角色! 🎭
  • 优点是代码复用、控制算法流程、提高扩展性、符合开闭原则! 👍
  • 缺点是增加复杂度、灵活性受到限制、类的数量增加! 👎
  • 适用于有一系列相似的算法,它们的执行流程基本相同,且需要让子类灵活地定制算法的某些步骤的场景! 🎯

希望这篇文章能让你彻底理解模板方法模式! 💯 祝你学习愉快! 😄
看完请看:(十 四)趣学设计模式 之 策略模式!

http://www.dtcms.com/a/495496.html

相关文章:

  • 李宏毅机器学习笔记25
  • 大连模板建站哪家好网站如何加入百度联盟
  • 当大模型遇上 HTTP:一次“无状态”的相似性思考
  • 衡阳网站设计ss0734如何做公司官网
  • asp网站做文件共享上传手机个别网页打不开
  • 做网站图网页搭建环境
  • 山西 网站制作wifi扩展器做网站
  • 利用VOSviewer快速可视化文献全过程(以Web of science为例)
  • appcms程序怎么做网站网站管理公司
  • [Qt] 什么是qmake与cmake
  • DevOps学习笔记
  • DevOps是什么,有什么作用,一般用来干嘛
  • Go语言:关于导包的两个重要说明
  • 21 种网络攻击方式,如何有效防护!
  • 工厂 电商网站建设WordPress网易云插卡
  • STM32H743-ARM例程23-USB_HID
  • 丽水微信网站建设哪家好阿里巴巴国际站坑人
  • 网站通知发送邮件广州 深圳 外贸网站建设公司
  • LOL实时数据推送技术揭秘:WebSocket在电竞中的应用
  • STC89C52RC---坤坤铁山靠
  • 幽冥大陆(十五)SIM300 拨打电话和短信——东方仙盟筑基期
  • SpringBoot校园二手商城系统
  • 贸易网站建设一个网站建设需要多少钱
  • 网站查询空间商企业不开了网站备案吗
  • iframe内嵌子系统可返回
  • 【读书笔记】《巨人的工具》
  • 【实战详解】MySQL 8.0递归查询终极教程:附组织架构/分类树完整代码
  • 最新网站开发工具东莞推广外包
  • 双目测距实战3-立体匹配
  • 战斗系统架构:为什么游戏战斗适合ECS架构?