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

湖北省建设工程招标网站字体设计网站大全

湖北省建设工程招标网站,字体设计网站大全,织梦网站地图调用全站文章,网络网站建设电话推销模板方法模式(Template Method Pattern)是一种行为型设计模式,它定义了一个算法的骨架,允许子类在不改变算法结构的情况下重写某些步骤的具体实现。 核心思想 抽象类定义模板方法(final 修饰,防止子类修改…

模板方法模式(Template Method Pattern)是一种行为型设计模式,它定义了一个算法的骨架,允许子类在不改变算法结构的情况下重写某些步骤的具体实现。

核心思想

  1. 抽象类定义模板方法(final 修饰,防止子类修改算法流程)

  2. 模板方法中调用多个步骤方法(可以是抽象方法或具体方法)

  3. 具体子类实现特定的步骤方法

行为由父类控制,子类只负责实现,子类通过扩展父类,实现更灵活的操作,符合开闭原则。缺点就是导致类个数增多,增加系统复杂度


示例场景:制作饮料
假设我们需要实现咖啡和茶的制作流程,二者步骤类似但具体操作不同:

// 抽象类:定义饮料制作模板
abstract class Beverage {// 模板方法 (final 防止子类覆盖)public final void prepareRecipe() {boilWater();brew();pourInCup();if (customerWantsCondiments()) {addCondiments();}}// 抽象方法:必须由子类实现protected abstract void brew();protected abstract void addCondiments();// 具体方法:通用步骤private void boilWater() {System.out.println("烧水");}private void pourInCup() {System.out.println("倒入杯子");}// 钩子方法:子类可选择是否覆盖(默认加调料)protected boolean customerWantsCondiments() {return true;}
}// 具体实现:咖啡
class Coffee extends Beverage {@Overrideprotected void brew() {System.out.println("冲泡咖啡粉");}@Overrideprotected void addCondiments() {System.out.println("加糖和牛奶");}// 覆盖钩子方法:不要调料@Overrideprotected boolean customerWantsCondiments() {return false;}
}// 具体实现:茶
class Tea extends Beverage {@Overrideprotected void brew() {System.out.println("浸泡茶叶");}@Overrideprotected void addCondiments() {System.out.println("加柠檬");}
}// 使用示例
public class Main {public static void main(String[] args) {Beverage coffee = new Coffee();coffee.prepareRecipe();/* 输出:烧水冲泡咖啡粉倒入杯子*/Beverage tea = new Tea();tea.prepareRecipe();/* 输出:烧水浸泡茶叶倒入杯子加柠檬*/}
}

关键点解析

  • 模板方法:prepareRecipe() 定义了算法骨架

  • 必须实现的步骤:brew()addCondiments() 是抽象方法

  • 可选覆盖的钩子方法:customerWantsCondiments() 提供扩展点

  • 代码复用:通用步骤(boilWater()pourInCup())在父类实现


应用场景

  • 多个类有相似算法流程,但部分步骤不同

  • 需要控制子类扩展的粒度(如:不允许修改算法顺序)

  • 框架中定义操作流程(如:Spring 的 JdbcTemplate)

  • 该模式通过封装不变部分、扩展可变部分,实现了代码复用与灵活扩展的平衡。

例如:生成PDF模板,有固定的logo位置、固定的表格排版,不固定的就是数据的解析,可以将logo的位置、基础样式放置在父类,将数据的解析放置在子类。


文章转载自:

http://A0GiLqzG.xkmrr.cn
http://iySXuyKr.xkmrr.cn
http://QAY3IRMv.xkmrr.cn
http://f5fZ6VVL.xkmrr.cn
http://tJUdtSRQ.xkmrr.cn
http://GNjlMY95.xkmrr.cn
http://5me2ZxHM.xkmrr.cn
http://uRrXK8BU.xkmrr.cn
http://WBTUcwVT.xkmrr.cn
http://7d87qwI6.xkmrr.cn
http://NlD9x4Q7.xkmrr.cn
http://eSjlkDgk.xkmrr.cn
http://P4t8g4tC.xkmrr.cn
http://ZJhpBfdJ.xkmrr.cn
http://CwiGUvCj.xkmrr.cn
http://aM34xqdt.xkmrr.cn
http://HbPrvzLn.xkmrr.cn
http://XhA9F8xW.xkmrr.cn
http://pKcj8Yxl.xkmrr.cn
http://aCqQS1JI.xkmrr.cn
http://M1z6aj38.xkmrr.cn
http://NHTzRf6x.xkmrr.cn
http://epnrKpH1.xkmrr.cn
http://GGsBH51r.xkmrr.cn
http://5ZUgUEIh.xkmrr.cn
http://XO82Jbbi.xkmrr.cn
http://rp8dAaVB.xkmrr.cn
http://GPsb0Hre.xkmrr.cn
http://QU1TCaq6.xkmrr.cn
http://N3CdTuek.xkmrr.cn
http://www.dtcms.com/wzjs/737285.html

相关文章:

  • 宁夏城乡和住房建设厅网站韩国做暖暖网站
  • 网站模块插件是怎么做的WORDPRESS网站如何改版
  • 天河建设网站系统电子商务包括哪些
  • 如何建立一个网站根目录wordpress播放页
  • 福州最好的网站设计服务公司电商运营怎么做如何从零开始
  • 科技公司网站制作模板百度seo是啥
  • 鹧鸪哨网站1v1深度开发网站店铺建设
  • 查找网站域名网站建设的作用是什么
  • 传统企业公司网站优化案例无锡专业网站建设
  • 网站备案怎么做超链接海口网站开发师招聘
  • 网站软件app美术馆网站建设
  • 网站建设公司代理商网站颜色
  • 提供给他人做视频解析的网站源码杂粮网站建设的必要性
  • 做肝病科网站哪些网站适合瀑布流
  • 基于php网站开发做外贸网站报价单
  • 网站建设服务器需要钱吗黄页88
  • 水墨 网站模板中职电子商务主要学什么课程
  • 如何修改网站titlewordpress访问加速
  • 校园网站建设服务青岛网站建设小公司
  • 怎么关注网站 在手机上wordpress最新文章链接插件
  • 网站数据库迁移南昌优化网站服务
  • wordpress建站系统wordpress python采集
  • 学做家常菜的网站 知乎重庆网站建设网站建设
  • 好的seo网站图片网站 建站
  • 专业刷粉网站数据可视化
  • 赣榆做网站如何重新打开wordpress
  • 一个虚拟主机做2个网站吗包装回收网站建设
  • 如何做下载网站赚钱吗建设医院在哪里
  • 大连开发区网站南阳建设网站招聘
  • 网站接入服务提供商一个网站怎么做pc和移动端