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

天津平台网站建设推荐东港区建设局网站

天津平台网站建设推荐,东港区建设局网站,一级造价师考试科目,网站建设款属不属于无形资产行为型模式-命令模式 8.6命令模式8.6.1概念8.6.2场景8.6.3优势 / 劣势8.6.4命令模式可分为8.6.5命令模式8.6.6实战8.6.6.1题目描述8.6.6.2输入描述8.6.6.3输出描述8.6.6.4代码 8.6.7总结 8.6命令模式 8.6.1概念 ​ 命令模式允许将请求封装成一个对象(命令对象#xff0c;包含… 行为型模式-命令模式 8.6命令模式8.6.1概念8.6.2场景8.6.3优势 / 劣势8.6.4命令模式可分为8.6.5命令模式8.6.6实战8.6.6.1题目描述8.6.6.2输入描述8.6.6.3输出描述8.6.6.4代码 8.6.7总结 8.6命令模式 8.6.1概念 ​ 命令模式允许将请求封装成一个对象(命令对象包含执行操作所需地所有信息)并将命令对象按照一定的顺序存储在队列中然后再逐一调用执行这些命令可以支持反向操作进行撤销和重做。这样发送者就只需要触发命令就可以完成操作不需要知道接受者的具体操作从而实现两者间的解耦 8.6.2场景 ​ 在餐饮业中命令模式可以用于实现订单的处理流程。例如在餐厅中当我们在客户端或者小程序上进行点单客户端 / 小程序会将我们在上面下的订单请求封装成为一个对象通过发送命令给后厨的工作人员上而他们就会根据我们下的具体订单进行菜品备菜、菜品制作、菜品上菜等一系列操作。 8.6.3优势 / 劣势 降低系统的耦合度将请求的发送者和接收者解耦提高系统扩展性可以方便地扩展新的命令和接收者提高系统的扩展力增加请求队列可以很容易地增加一个请求队列以便在需要时处理或延迟处理请求支持撤销操作通过记录一系列命令可以很轻松地回溯并撤销之前地操作 增加系统的复杂性需要创建多个类和对象执行顺序不保证不能保证命令的执行顺序 8.6.4命令模式可分为 命令接口Command接口或抽象类定义执行操作的接口具体命令类ConcreteCommand实现命令接口执行具体操作在调用execute方法时接收者对象根据命令完成具体的任务比如遥控器中的开机关机命令接收者类Receiver接受并执行命令的对象可以是任何对象遥控器可以控制空调也可以控制电视机电视机和空调负责执行具体操作是接收者调用者类Invoker发起请求的对象有一个将命令作为参数传递的方法。它不关心命令的具体实现只负责调用命令对象的execute()方法来传递请求在本例中控制遥控器的人就是调用者客户端创建具体的命令对象和接收者对象然后将它们组装起来 8.6.5命令模式 package com.technologystatck.designpattern.mode.command;import java.util.*;public class Commands {public static void main(String[] args) {Receiver receiver new Receiver();ConcreteCommand command new ConcreteCommand(receiver);new Invoker(command).executeCommand();} } //定义执行操作的接口包含一个execute方法有时还会包括unExecute方法表示撤销命令 interface Command{//执行方法void execute();//撤销方法void undo(); }//实现命令接口执行具体的操作 class ConcreteCommand implements Command{//接收者对象private Receiver receiver;public ConcreteCommand(Receiver receiver) {this.receiver receiver;}Overridepublic void execute() {receiver.action();}Overridepublic void undo() {receiver.unAction();} }//定义接受者类知道如何实施与执行一个请求相关的操作 class Receiver{public void action(){//执行操作}public void unAction(){//撤销操作} } //定义调用者类调用命令对象执行请求 class Invoker{private Command command;public Invoker(Command command) {this.command command;}public void executeCommand(){command.execute();} } //调用者类可以维护一个命令队列或者撤销栈以支持批处理和撤销命令 class Invoker{//命令队列private QueueCommand commandQueue;//撤销栈private StackCommand undoStack;public Invoker(QueueCommand commandQueue, StackCommand undoStack) {this.commandQueue new LinkedList();this.undoStack new Stack();}//设置命令并执行public void setAndExecuteCommand(Command command){command.execute();commandQueue.offer(command);undoStack.push(command);}//撤销上一个命令public void undoLastCommand(){if(!undoStack.isEmpty()){Command lastCommand undoStack.pop();//命令类实现undo方法lastCommand.undo();commandQueue.remove(lastCommand);}else{System.out.println(No command to undo.);}}//执行命令队列中的所有命令public void executeCommandsInQueue(){for (Command command : commandQueue) {command.execute();}} }8.6.6实战 8.6.6.1题目描述 小明去奶茶店买奶茶他可以通过在自助点餐机上来点不同的饮品请你使用命令模式设计一个程序模拟这个自助点餐系统的功能。 8.6.6.2输入描述 第一行是一个整数 n1 ≤ n ≤ 100表示点单的数量。接下来的 n 行每行包含一个字符串表示点餐的饮品名称。 8.6.6.3输出描述 输出执行完所有点单后的制作情况每行输出一种饮品的制作情况。如果制作完成输出 “XXX is ready!”其中 XXX 表示饮品名称。 8.6.6.4代码 package com.technologystatck.designpattern.mode.command;import java.util.Scanner;public class Test {public static void main(String[] args) {Scanner scanner new Scanner(System.in);//创建接收者和命令对象DrinkMaker drinkMaker new DrinkMaker();//读取命令数量int numsscanner.nextInt();scanner.nextLine();while(nums-- 0){//读取命令String drinkNamescanner.next();//创建命令对象OrderCommand command new OrderCommand(drinkName, drinkMaker);//执行命令OrderMachine orderMachine new OrderMachine();orderMachine.setCommand(command);orderMachine.executeOrder();}scanner.close();} }//定义执行操作的命令订单接口 interface Command{void execute(); }//定义具体命令类实现点餐 class OrderCommand implements Command{//饮料名称private String drinkName;//具体的饮料制作者private DrinkMaker drinkMaker;public OrderCommand(String drinkName, DrinkMaker drinkMaker) {this.drinkName drinkName;this.drinkMaker drinkMaker;}Overridepublic void execute() {drinkMaker.makeDrink(drinkName);} }//接收者类-制作饮料 class DrinkMaker{public void makeDrink(String drinkName){System.out.println(drinkName is ready);} }//调用者类-点餐机 class OrderMachine{private Command command;public void setCommand(Command command) {this.command command;}//执行下单方法public void executeOrder(){command.execute();} } 8.6.7总结 优点方便扩展新的命令和接收者还可以撤销操作增加系统的灵活性和可维护性总结将请求封装成一个对象通过具体命令类、调用者、接收者以此来完成相关操作场景适用于需要实现撤销操作需要保证事务一致性等场景
http://www.hkea.cn/news/14411401/

相关文章:

  • 网站 微站建设排名网站建设v
  • 网站文件夹权限win7 发布asp网站
  • 网站建设微站重庆做木门网站公司
  • 南京高端网站建设大气的化妆品网站名
  • 个人建站免费服务器郑州网站托管助企
  • 搭建网站 优帮云网站打开加速
  • asp.net网站建设ppt邯郸做网站找哪家好
  • 怎么制作网站域名wordpress 在线阅读pdf
  • 长葛哪里有做网站的淮北做网站电话
  • 可以做微课PPT模板 网站vs2013 网站开发
  • 05网站做网站有什么关于财务的问题
  • 网络建站工具wordpress没有图片
  • 建设网站能自学吗jquery上传wordpress
  • 郑州网站优化网络建设有限公司旧家电回收网站开发
  • 奇搜建设辽沈阳网站网站设计公司服务
  • 小企业网站建设新市场报价仿站工具哪个好最好
  • 在线商城网站制作北京哪里做网站
  • 河南省商丘网站网软志成企业网站管理系统
  • 什么网站可以免费推广wordpress 4.9.1
  • 网站网站建设哪家便宜中山精品网站建设市场
  • 上海网站的建设wordpress购买邀请码
  • 网站结构有哪些类型欧亚专线荷兰快递单号查询
  • 大型网站外链是怎么建设的教资注册网站
  • 工商注册网站模板wordpress文章关键字怎么添加
  • 网站不备案支付宝接口建网站要多少钱一个
  • 网站维护多久能好北京建设工程网
  • 自己做网站 教程旅游网站怎么建设
  • 湛江市研发网站建设在新西兰做兼职的网站
  • 万链网站做的怎么样?什么是网络设计制作
  • 旅游网站设计开题报告wordpress页面侧菜单