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

网站特色怎么写广州室内设计公司排行榜

网站特色怎么写,广州室内设计公司排行榜,昆明铁路局建设工程网站,杭州电商网站平台开发公司模板方法设计模式 🚩什么是模板方法设计模式?🚩模板方法设计模式的特点🚩模板方法设计模式的结构🚩模板方法设计模式的优缺点🚩模板方法设计模式的Java实现🚩代码总结🚩总结 &#x…

模板方法设计模式

  • 🚩什么是模板方法设计模式?
  • 🚩模板方法设计模式的特点
  • 🚩模板方法设计模式的结构
  • 🚩模板方法设计模式的优缺点
  • 🚩模板方法设计模式的Java实现
  • 🚩代码总结
  • 🚩总结

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

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

使用场景

  • 当多个类有相同的方法,且逻辑基本相同,只有某些细节不同时

  • 当需要控制子类扩展的粒度,只允许子类重写特定操作时

  • 当需要提取公共行为到父类,避免代码重复时

  • 适用于 框架设计流程固定但步骤实现不同 的场景

🚩模板方法设计模式的特点

  • 定义算法骨架:父类定义不变的部分和可变的抽象方法

  • 代码复用:公共代码放在父类中实现

  • 扩展控制:子类只能重写特定步骤,不能改变算法结构

  • 反向控制:父类调用子类操作,而非子类调用父类

🚩模板方法设计模式的结构

模板方法模式主要包含以下部分:

  • AbstractClass(抽象类):定义模板方法和抽象的基本操作

  • ConcreteClass(具体子类):实现抽象类定义的抽象操作

图例:

在这里插入图片描述

🚩模板方法设计模式的优缺点

✅ 优点

  • 代码复用:将公共行为放在父类中,避免代码重复

  • 扩展性好:子类可以通过重写方法扩展特定步骤

  • 反向控制:父类控制流程,子类只需关注实现细节

  • 符合开闭原则:对扩展开放,对修改关闭

  • 提高可维护性:算法结构清晰,易于维护

❌ 缺点

  • 限制灵活性:子类必须遵循父类定义的算法结构

  • 可能导致类膨胀:每个不同实现都需要一个子类

  • 继承的缺点:Java单继承限制,子类无法再继承其他类

  • 调试困难:模板方法中的流程控制可能使调试变得复杂

🚩模板方法设计模式的Java实现

代码地址:GitHub

  • 创建Person抽象类,定义一个抽象方法TemplateMethod() 和两个抽象操作
/*** @author hanson.huang* @version V1.0* @ClassName Person* @Description 抽象类定义了模板方法TemplateMethod* @date 2025/3/26 13:14**/
public abstract class Person {public void TemplateMethod() {System.out.println("上课 去教室"); // 1PrimitiveOperation1(); // 2System.out.println("下课 离开教室"); // 3PrimitiveOperation2(); // 4}public abstract void PrimitiveOperation1(); // 原语操作 1 :上课过程 学生 听课…… 老师 讲课public abstract void PrimitiveOperation2(); // 原语操作 2 :作业     学生 写作业 提交作业…… 老师 批改作业 打分数
}
  • 创建两个具体子类Student Teacher,各自实现抽象操作

    • Student 子类
    /*** @author hanson.huang* @version V1.0* @ClassName Student* @Description 具体子类 Student* @date 2025/3/26 13:15**/
    public class Student extends Person {@Overridepublic void PrimitiveOperation1() {System.out.println("学生:听课 学习 做笔记 提出问题");}@Overridepublic void PrimitiveOperation2() {System.out.println("学生:写作业 提交作业");}
    }
    
    • Teacher 子类
    /*** @author hanson.huang* @version V1.0* @ClassName Teacher* @Description 具体子类 Teacher* @date 2025/3/26 13:24**/
    public class Teacher extends Person {@Overridepublic void PrimitiveOperation1() {System.out.println("老师:上课 讲课 解答问题 布置作业");}@Overridepublic void PrimitiveOperation2() {System.out.println("老师:批改作业 打分数");}
    }
    
  • 测试模板方法模式

/*** @author hanson.huang* @version V1.0* @ClassName TemplateMethodPattern* @Description 测试模板方法模式* @date 2025/3/26 13:25**/
public class TemplateMethodPattern {public static void main(String[] args) {// 父类名 对象名 = new 子类名();Person student = new Student();Person teacher = new Teacher();student.TemplateMethod();System.out.println("=====我是分割线=====");teacher.TemplateMethod();}
}

📌 运行结果

在这里插入图片描述

🚩代码总结

  • Person 抽象类定义了模板方法 TemplateMethod() 和两个抽象操作

  • StudentTeacher 是具体子类,实现了各自的抽象操作

  • 模板方法固定了流程顺序,子类只需实现特定步骤

  • 客户端调用时,不同子类表现出不同的行为,但流程结构一致

🚩总结

  • 模板方法设计模式 定义算法骨架将具体步骤延迟到子类实现

  • 核心是 封装不变部分扩展可变部分实现代码复用

  • 适用于 流程固定但某些步骤实现不同 的场景

✅ Java源码中的应用场景:

  • Java IO类中的InputStream/OutputStream

    • 定义了读取/写入的基本流程,具体实现由子类完成

创作不易,不妨点赞、收藏、关注支持一下,各位的支持就是我创作的最大动力❤️

在这里插入图片描述


文章转载自:

http://hfTrR9uI.zdsdn.cn
http://FYQMehIa.zdsdn.cn
http://TNkeVtyt.zdsdn.cn
http://1ydlUo3A.zdsdn.cn
http://g38sVkwW.zdsdn.cn
http://tNXZDLlo.zdsdn.cn
http://SoLdSg5Q.zdsdn.cn
http://0pkQHewU.zdsdn.cn
http://SF9YPjFM.zdsdn.cn
http://mKlA48qx.zdsdn.cn
http://c6eplirR.zdsdn.cn
http://aoIStoKU.zdsdn.cn
http://UpdNSOHE.zdsdn.cn
http://qphdAe7x.zdsdn.cn
http://S0qbW7MM.zdsdn.cn
http://fdrtjkHz.zdsdn.cn
http://b7NI8Ppt.zdsdn.cn
http://zf4jmJ4s.zdsdn.cn
http://Cp8QZMvP.zdsdn.cn
http://HRTdyciS.zdsdn.cn
http://II49jStm.zdsdn.cn
http://piiPuuAj.zdsdn.cn
http://vzFeQLlz.zdsdn.cn
http://a0c8a7oX.zdsdn.cn
http://572DkkRe.zdsdn.cn
http://R1d7LuWy.zdsdn.cn
http://2mOtBVvz.zdsdn.cn
http://cpmMV15K.zdsdn.cn
http://98KYlIL6.zdsdn.cn
http://VDdnFhXB.zdsdn.cn
http://www.dtcms.com/wzjs/733658.html

相关文章:

  • 网站后台发布文章横琴网站建设公司
  • 番禺建网站免费代理网址
  • 网站不备案可以么广州网站建设报价单
  • 沈阳网站页面设计公司建站赚钱灰色
  • 怎么使网站降权肇庆市场核酸检测
  • 中国制造网官方网站国际站wordpress 密码解密
  • 网站开发是做什么google seo实战教程
  • 大型电子商务网站建设试述网站建设应考虑哪些方面的问题
  • 企业的建站方式中国机械工业建设集团有限公司网站
  • 网站短信通知wordpress将404跳转主页
  • 医院网站建设价格ftp怎么上传网站
  • 架设网站 自己购买服务器网站建设成本图
  • 旅游网站规划设计自己想学做博客网站吗
  • 东莞网站建设部落上海线上引流推广
  • 网站seo具体怎么做?网盘建网站
  • 网站后台密码忘了怎么办网络开发语言的有哪些
  • 自己做的网站图片加载过慢建设银行的官方网站公告
  • 青龙建站教程自学网北京网站建设itcask
  • 北京网站建设推广服wordpress滑块教程
  • 名师工作室网站建设现状调查深圳龙岗是不是很落后
  • 电力建设期刊网站经常维护吗quark搜索引擎入口
  • 茂名网站建设方案开发百度24小时人工电话
  • 台州网站建设哪家便宜wordpress post提交表单
  • 住房与城乡建设部网站打不开网站做多个语言有什么好处
  • 淘宝网站短链接怎么做个人备案网站做盈利合法吗
  • 个人网站建设目标广告设计制作服务方案
  • 深圳市网站建设制作设计平台常州做网站优化
  • 工业风 网站建设聊城专业网站建设公司电话
  • 网站文章怎么更新android开发环境搭建
  • 镇江市城市建设投资公司官方网站中国能建设计公司网站