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

做招商类型的网站付费网站搭建

做招商类型的网站,付费网站搭建,郴州网站优化,清远 网站建设定义 命令模式#xff08;Command Pattern#xff09;是一种行为型设计模式#xff0c;它将一个请求封装为一个对象#xff0c;从而允许用户使用不同的请求、队列或日志来参数化其他对象。命令模式也支持可撤销的操作。主要目的是将命令的发送者和接收者解耦#xff0c;引…定义 命令模式Command Pattern是一种行为型设计模式它将一个请求封装为一个对象从而允许用户使用不同的请求、队列或日志来参数化其他对象。命令模式也支持可撤销的操作。主要目的是将命令的发送者和接收者解耦引入了命令对象来在发送者和接收者之间充当中介。 命令模式主要涉及以下角色 命令Command接口声明执行操作的接口。具体命令Concrete Command实现命令接口定义了接收者和行为之间的绑定关系。调用者通过执行命令来执行相应的操作。接收者Receiver知道如何实施与执行一个请求相关的操作。任何类都可能作为一个接收者。调用者Invoker要求该命令执行这个请求。通常会持有命令对象并在某个时间点调用命令对象的执行方法。客户端Client创建具体命令对象并设置其接收者。 解决的问题 命令的封装和抽象 当需要将请求或简单操作封装为一个对象时命令模式提供了一种方式。这样请求的发送者和接收者可以被解耦使得发送者不需要知道请求的具体实现细节。 可变更和扩展命令 命令模式允许动态地更改、添加或删除命令而无需修改现有代码。这增加了系统的灵活性并支持动态的命令更改。 历史记录和撤销功能 命令模式可以记录所有执行的操作和命令这使得实现撤销undo和重做redo功能变得可能。 队列请求和日志请求 命令对象可以被序列化和存储以便稍后执行或远程执行支持队列请求和日志请求的功能。 参数化对象 通过命令模式可以参数化对象根据不同的命令改变对象的行为。 操作的解耦 命令模式将发起操作的对象和执行操作的对象解耦提高了系统的模块化使得命令的发送者和接收者不直接交互。 使用场景 参数化对象 当需要基于不同的命令改变对象的行为时命令模式可以将这些命令封装成对象实现对象行为的动态切换。 操作的队列化和日志记录 在需要对命令进行排队、记录或执行延迟时命令模式非常有用。例如在实现一个多线程的任务队列、事务队列或日志系统时可以使用命令模式来封装具体操作。 撤销和重做功能 在应用程序如编辑器中实现撤销undo和重做redo功能时命令模式可以记录每一步操作并提供回滚机制。 分离命令的发起者和执行者 当需要将命令的发起者和执行者解耦时命令模式提供了一种机制让发起者不需要了解命令的具体执行过程。 组合命令 在需要组合多个命令以形成复合命令时命令模式使得可以将多个简单命令组合成一个宏命令。 回调功能的实现 在需要提供回调功能时命令模式允许将操作封装成对象并在合适的时候执行。 示例代码1-简单的遥控器 // 命令接口 interface Command {void execute(); }// 具体命令开灯 class LightOnCommand implements Command {private Light light;public LightOnCommand(Light light) {this.light light;}public void execute() {light.turnOn();} }// 具体命令关灯 class LightOffCommand implements Command {private Light light;public LightOffCommand(Light light) {this.light light;}public void execute() {light.turnOff();} }// 请求者类遥控器 class RemoteControl {private Command command;public void setCommand(Command command) {this.command command;}public void pressButton() {command.execute();} }// 接收者类灯 class Light {public void turnOn() {System.out.println(Light is on.);}public void turnOff() {System.out.println(Light is off.);} }// 客户端代码 public class CommandDemo {public static void main(String[] args) {Light light new Light();Command lightOn new LightOnCommand(light);Command lightOff new LightOffCommand(light);RemoteControl remote new RemoteControl();remote.setCommand(lightOn);remote.pressButton(); // 输出: Light is on.remote.setCommand(lightOff);remote.pressButton(); // 输出: Light is off.} }示例代码2-文本编辑器的命令 // 命令接口 interface Command {void execute();void undo(); }// 具体命令写入文本 class WriteCommand implements Command {private TextFile textFile;private String textToWrite;public WriteCommand(TextFile textFile, String text) {this.textFile textFile;this.textToWrite text;}public void execute() {textFile.write(textToWrite);}public void undo() {textFile.eraseLast();} }// 接收者类文本文件 class TextFile {private StringBuilder text new StringBuilder();public void write(String text) {this.text.append(text);}public void eraseLast() {if (text.length() 0) {text.deleteCharAt(text.length() - 1);}}public String read() {return text.toString();} }// 客户端代码 public class EditorDemo {public static void main(String[] args) {TextFile textFile new TextFile();Command writeHello new WriteCommand(textFile, Hello);Command writeWorld new WriteCommand(textFile, World);writeHello.execute();writeWorld.execute();System.out.println(textFile.read()); // 输出: Hello WorldwriteWorld.undo();System.out.println(textFile.read()); // 输出: Hello} }主要符合的设计原则 开闭原则Open-Closed Principle 命令模式允许在不修改已有代码的情况下引入新的命令。你可以添加新的命令类来扩展系统的行为而无需修改现有的请求发送者或其他命令的代码。因此系统对扩展是开放的但对修改是封闭的。 单一职责原则Single Responsibility Principle 在命令模式中每个命令类只负责一个特定的操作或行为这符合单一职责原则。此外请求的发送者和接收者也被解耦每个对象都只处理它自己的部分。 依赖倒置原则Dependency Inversion Principle 命令模式中请求发送者依赖于命令抽象而不是具体的命令实现。这符合依赖倒置原则即高层模块不应该依赖于低层模块两者都应该依赖于抽象。 在JDK中的应用 java.lang.Runnable Runnable 接口是命令模式的一个经典例子。它代表一个待执行的操作通常用于创建线程。实现 Runnable 接口的类封装了要在线程中执行的操作命令而 Thread 类则充当调用者执行这些操作。 javax.swing.Action 在Swing库中Action 接口用于封装事件监听器的响应逻辑。当触发事件如按钮点击时与之关联的 Action 对象被执行这类似于命令模式中命令的执行。 java.util.concurrent.Callable 类似于 RunnableCallable 接口也封装了一个异步操作但与 Runnable 不同的是Callable 可以返回一个结果并能抛出异常。Callable 实例可以提交给 ExecutorService 执行后者充当调用者的角色。 这些例子虽然不是命令模式的完整实现但它们体现了命令模式的核心概念封装操作作为一个对象并由另一个对象负责执行这些操作。这种模式在JDK中的应用提供了一种灵活的方式来处理异步操作、事件处理和其他需要动态指定和执行操作的场景。 在Spring中的应用 Spring的事务管理 在Spring的事务管理中事务代码可以被看作是命令对象。当执行事务时实际的事务逻辑即命令被封装在事务管理器中。这样的设计允许灵活地启动、提交或回滚事务类似于命令模式中的命令执行。 Spring MVC的Controller方法 在Spring MVC中控制器Controller中的方法可以被视为命令。每个方法封装了特定的处理逻辑而DispatcherServlet则相当于命令的调用者根据请求调用相应的控制器方法。 JdbcTemplate的回调 Spring的 JdbcTemplate 类使用回调机制来封装数据库操作这些回调可以被视为命令对象。JdbcTemplate 提供了一系列的方法比如 query 或 update这些方法接受一个回调参数封装了执行操作的具体逻辑。 虽然这些例子并不是命令模式的纯粹形式但它们在设计上采用了命令模式的核心思想——将请求封装成对象并由另一个对象来执行这些请求。这种模式在Spring框架中主要体现在将业务逻辑封装在独立的类或方法中而由框架的其他部分来负责调用这些逻辑。这样的设计有助于降低系统各部分之间的耦合度提高代码的可重用性和灵活性。
http://www.w-s-a.com/news/305515/

相关文章:

  • 兰州网站设计公司排名百度怎么发布短视频
  • 大连模板开发建站泰州网站建设策划方案
  • 厦门好的网站设计局域网内建网站
  • 关键词那种网站正版网页游戏平台排行榜
  • 网站自助建设平台创建网址快捷方式
  • 坑梓网站建设包括哪些成都网站建设优创
  • 重庆网站seo公司哪家好超级优化大师
  • 成都网站建设推广详情邵阳市住房和城乡建设局网站
  • 淄博网站推广猎头公司有哪些
  • 局域网内建立网站90设计网怎么样
  • 域名备案和网站备案有什么不同工程项目建设网站
  • 做网站难吗?wordpress评论qq
  • 权威网站优化价格电子商务静态网站建设实验报告
  • 公司如何办网站北京网站建设公司内江
  • 六安建设网站企业营业执照查询系统入口
  • a5网站建设如果建设淘宝导购网站
  • html5响应式网站开发教程在国内做跨境电商怎么上外国网站
  • win7配置不能运行wordpress关键词快速优化排名软件
  • 餐饮公司最好的网站建设手机网站 搜索优化 百度
  • 17网站一起做网批做服装团购网站
  • 广州网站制作知名企业网站搭建品牌
  • 如何去除网站外链个人网页制作全过程
  • 保洁公司网站怎么做科技设计网站有哪些内容
  • 建设厅网站查询网页设计好就业吗
  • 惠东县网站建设wordpress 如何回到初始
  • 如何让公司网站网站转备案
  • 获得网站所有关键字北京网站建设116net
  • 铜陵电子商务网站建设做龙之向导网站有用吗
  • 购物网站制作费用沧州新华区
  • 信宜网站设计公司在线购物商城系统