当前位置: 首页 > 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://www.dtcms.com/wzjs/4646.html

相关文章:

  • 购物商城网站开发竞价推广平台有哪些
  • 织梦网站怎么做新闻导航页成都搜索优化整站优化
  • 免费做店招哪个网站好百度竞价点击神器奔奔
  • 广州电子商城网站建设网络营销ppt
  • 江门做网站公司开网络公司外贸网站seo
  • 美食网站建设项目预算营销技巧培训
  • 在哪个网站做推广比较好如何在互联网上做推广
  • 网站开发师是做什么的国内最好用免费建站系统
  • 西安市城乡建设管理局网站6app注册推广拉人
  • 网站access数据怎么做腾讯竞价广告
  • 阿里巴巴免费做国际网站东莞市优速网络科技有限公司
  • 知名网站建设定制长沙seo优化价格
  • 南昌网站建设 南昌做网站公司深圳最新消息
  • 淘掌门官方网站企业qq手机版
  • 网站如何做映射吉林seo刷关键词排名优化
  • 龙信建设集团有限公司网站百度风云榜小说排行榜历届榜单
  • 百度网站改版提交上海网站推广服务公司
  • html5怎么做简单的网站网站开发从入门到实战
  • 做暖暖视频网站大全页面设计漂亮的网站
  • 汕头站扩建什么时候完成投诉百度最有效的电话
  • 网站制作一个人可以做吗快速提高网站关键词排名优化
  • 杭州置地电商基地网站建设南宁seo排名外包
  • 网站建设模式有哪些东莞网站建设推广哪家好
  • wordpress插件ERPseo网站关键词优化哪家好
  • 网站过度优化哈尔滨百度网站快速优化
  • 网站建设利润 有多少百度网址安全检测中心
  • 美食网站建设策划方案广州网络公司
  • 做网站的步骤是什么关键词推广方式
  • 网站安全注意哪些问题吗100个免费推广b站
  • 长安响应式网站建设引擎优化是什么工作