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

专门做茶叶的网站设计师网站 pins

专门做茶叶的网站,设计师网站 pins,用node.js可以做网站吗,婚介 东莞网站建设上一篇地址#xff1a;赶紧收藏#xff01;2024 年最常见 20道设计模式面试题#xff08;七#xff09;-CSDN博客 十五、模板方法模式是如何在父类中定义算法框架的#xff1f; 模板方法模式通过在父类#xff08;通常是一个抽象类#xff09;中定义算法的骨架#x…上一篇地址赶紧收藏2024 年最常见 20道设计模式面试题七-CSDN博客 十五、模板方法模式是如何在父类中定义算法框架的 模板方法模式通过在父类通常是一个抽象类中定义算法的骨架同时允许子类实现或扩展某些步骤来实现算法框架的定义。这种模式使得算法的结构保持不变而某些特定步骤的行为可以被定制。以下是模板方法模式在父类中定义算法框架的详细步骤 定义模板方法 模板方法是在父类中定义的一个抽象方法它规定了算法的总体流程。这个方法通常是一个最终方法final以确保子类不能改变算法的结构。 调用基本方法 在模板方法中父类调用一个或多个基本方法来实现算法的特定步骤。这些基本方法可以是抽象的也可以是具体的。 定义钩子方法可选 钩子方法是在父类中定义的可以被子类覆盖的方法。它们通常在模板方法中被调用允许子类在算法的执行过程中插入自己的行为。 实现或扩展基本方法 父类可以提供一些基本方法的默认实现这些方法可以被子类重写以提供特定的行为。 抽象方法 对于那些需要由子类实现的步骤父类中定义为抽象方法子类必须提供这些方法的具体实现。 确保算法的一致性 父类通过模板方法控制算法的执行流程确保算法的一致性即使子类改变了某些步骤的行为。 代码示例伪代码 // 抽象类定义算法框架 abstract class Game {// 模板方法定义算法骨架public final void play() {initialize();startPlay();endPlay();}// 抽象方法由子类实现protected abstract void initialize();// 钩子方法可以被子类覆盖protected void startPlay() {// 默认行为}// 钩子方法可以被子类覆盖protected void endPlay() {// 默认行为} }// 具体类实现算法的特定步骤 class SoccerGame extends Game {Overrideprotected void initialize() {// 足球游戏的初始化}Overrideprotected void startPlay() {// 足球游戏的开始逻辑}Overrideprotected void endPlay() {// 足球游戏的结束逻辑} }// 客户端代码 Game game new SoccerGame(); game.play(); // 执行足球游戏的算法流程 在这个示例中Game 类是一个抽象类它定义了 play 方法作为模板方法该方法调用了 initialize、startPlay 和 endPlay 这三个基本方法构成了一个游戏的算法框架。SoccerGame 类继承自 Game 类并提供了 initialize、startPlay 和 endPlay 方法的具体实现从而定制了足球游戏的算法步骤。通过这种方式模板方法模式确保了算法的一致性同时允许子类定制特定的行为。 十六、命令模式如何实现请求的封装和解耦 命令模式Command Pattern是一种行为设计模式它将一个请求或操作封装为一个对象。这种模式允许用户使用不同的请求、队列或日志请求来参数化其他对象同时支持可撤销的操作。命令模式通过以下方式实现请求的封装和解耦 命令模式的组成部分 命令接口Command定义了执行操作的接口。具体命令Concrete Command实现命令接口对应于具体请求或操作。调用者Invoker要求该命令执行这个请求。接收者Receiver知道如何实施与执行一个请求相关的操作。 命令模式如何实现请求的封装 封装请求命令接口定义了执行操作的方法具体命令类实现这个接口将请求封装为一个对象。这意味着请求的详细信息和执行逻辑都被包含在具体命令对象中。 参数化调用者调用者通过命令对象来执行请求而不是直接调用接收者的方法。这样调用者不需要知道接收者的具体实现只需要知道命令对象。 使用命令队列命令对象可以被存储在队列中允许系统在不同时间执行请求实现请求的排队和调度。 命令模式如何实现请求的解耦 解耦调用者和接收者调用者通过命令对象来间接调用接收者的方法不需要直接与接收者交互。这样调用者和接收者之间的耦合度降低。 扩展性当需要添加新的请求类型时只需添加一个新的具体命令类而不需要修改现有的调用者或接收者类。这符合开闭原则对扩展开放对修改封闭。 撤销操作命令模式可以很容易地实现撤销操作。通过维护一个命令的历史列表可以创建一个撤销命令来撤销之前执行的命令。 日志记录命令对象可以被用来记录请求的日志便于后续的审计或调试。 代码示例伪代码 // 命令接口 interface Command {void execute(); }// 接收者 class Receiver {public void action() {// 接收者执行的操作} }// 具体命令 class ConcreteCommand implements Command {private Receiver receiver;public ConcreteCommand(Receiver receiver) {this.receiver receiver;}public void execute() {receiver.action();} }// 调用者 class Invoker {private Command command;public void setCommand(Command command) {this.command command;}public void trigger() {command.execute();} }// 客户端代码 Receiver receiver new Receiver(); Command command new ConcreteCommand(receiver); Invoker invoker new Invoker();invoker.setCommand(command); invoker.trigger(); // 执行请求 在这个示例中ConcreteCommand 类是一个具体命令它封装了对 Receiver 类的 action 方法的调用。Invoker 类作为调用者通过 setCommand 方法设置要执行的命令并通过 trigger 方法执行这个命令。这样调用者和接收者之间的耦合被命令对象解耦同时请求被封装在命令对象中可以灵活地进行操作如排队、撤销等。
http://www.hkea.cn/news/14270273/

相关文章:

  • 泊头做网站的网页设计与网站建设书籍
  • 宁波网站建设优化排名商城推广方案
  • 国内好的企业网站网站建设服务费怎么记账
  • 哪个网站可以免费做H5做网站公司599
  • 如何设计产品网站建设公司装修款账务处理
  • 做我韩国连续剧网站天津专业做标书
  • 智能网站开发工具免费空间浏览量
  • 响应式网站制作流程有哪些做海报好的网站
  • 网站仿做软件凤山网站seo
  • 企业网站建设方案教程建筑装饰网站模板
  • 回收类型网站如何做长春网络公司查找垚鑫科技
  • 酒店都不建网站吗物流网站制作怎么做
  • 典型的电子商务网站蚌埠网站建设公司
  • 网站开发需要的人员如何制作ppt视频教程
  • 网页设计基础只是株洲sem优化哪家好
  • 如何使用微信公众号做网站餐饮品牌设计包括哪些
  • 做网站哪个地方需要钱哈尔滨网站建设哪家好
  • 手机管理网站模板下载软件有限公司与有限责任公司的区别
  • 咸宁网站设计制作wordpress获取文章的标签
  • 广州建网站加备案口碑好的合肥网站建设
  • 做软件开发视频网站汽车案例网站
  • 自助网站建设方案门户网站开发要多少钱
  • 软件开发步骤包括哪些郑州网站建设专注乐云seo
  • 免费建设小说网站网页无法访问游戏
  • 坑梓网站建设怎么样视频背景网站
  • 徐州市城乡和城乡建设厅网站免费app制作网站
  • 搜网站旧域名一个网站有个前端后端怎么做
  • 县区工会网站建设方案绍兴免费做网站
  • 批量做网站网站站群优化
  • 软件代做网站在哪找活旅游 网站开发的项目描述