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

专业的外贸行业网站制作购物最便宜的app

专业的外贸行业网站制作,购物最便宜的app,营销公司网站模板下载,李字logo创意设计文章目录 Java 设计模式之命令模式概述UML代码实现简单实现复杂实现 Java 设计模式之命令模式 概述 命令模式(Command):将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可…

文章目录

  • Java 设计模式之命令模式
    • 概述
    • UML
    • 代码实现
      • 简单实现
      • 复杂实现

Java 设计模式之命令模式

概述

  • 命令模式(Command):将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。
  • 敏捷开发原则告诉我们,不要为代码添加基于猜测的、实际不需要的功能。如果不清楚一个系统是否需要命令模式,一般就不要着急去实现它,事实上,在需要的时候通过重构实现这个模式并不困难,只有在真正需要如撤销/恢复操作等功能时,把原来的代码重构为命令模式才有意义。

UML

在这里插入图片描述

  • Command:命令接口,定义执行操作的通用接口。
  • ConcreteCommand:具体命令类,实现具体的命令操作,持有接受者对象。
  • Receiver:接收者累,实际执行操作的对象。
  • Invoker:调用者,触发命令的对象。

代码实现

简单实现

定义命令接口:

public interface Command {void execute();
}

定义具体命令类:

public class LightOffCommand implements Command {private Light light;public LightOffCommand(Light light) {this.light = light;}@Overridepublic void execute() {light.turnOff();}
}
public class LightOnCommand implements Command {private Light light;public LightOnCommand(Light light) {this.light = light;}@Overridepublic void execute() {light.turnOn();}
}

定义接收者类:

public class Light {public void turnOn() {System.out.println("开灯");}public void turnOff() {System.out.println("关灯");}
}

定义调用者类:

public class RemoteControl {private Command command;public void setCommand(Command command) {this.command = command;}public void pressButton() {command.execute();}
}

使用:

public class Client {public static void main(String[] args) {Light light = new Light();Command lightOn = new LightOnCommand(light);Command lightOff = new LightOffCommand(light);RemoteControl control = new RemoteControl();control.setCommand(lightOn);control.pressButton();control.setCommand(lightOff);control.pressButton();}
}

输出:

开灯
关灯

复杂实现

定义抽象命令类:

abstract class Command {protected RoastCook receiver;public Command(RoastCook receiver) {this.receiver = receiver;}abstract void execute();
}

定义接收者类:

public class RoastCook {public void bakeMeet() {System.out.println("烤肉");}public void bakeFish() {System.out.println("烤鱼");}
}

定义具体命令类:

public class RoastFishCommand extends Command {public RoastFishCommand(RoastCook receiver) {super(receiver);}@Overridevoid execute() {receiver.bakeFish();}
}
public class RoastMeatCommand extends Command {public RoastMeatCommand(RoastCook receiver) {super(receiver);}@Overridevoid execute() {receiver.bakeMeet();}
}

定义调用者类:

public class Waiter {private ArrayList<Command> orders = new ArrayList<>();private Command command;// 下单public void setOrder(Command command) {String className = command.getClass().getSimpleName();if (className.equals("RoastFishCommand")) {System.out.println("下单:" + "烤鱼");} else {System.out.println("下单:" + "烤肉");}orders.add(command);}// 取消订单public void cancelOrder(Command command) {String className = command.getClass().getSimpleName();if (className.equals("RoastFishCommand")) {System.out.println("取消:" + "烤鱼");} else {System.out.println("取消:" + "烤肉");}orders.remove(command);}// 通知public void notifyCommand() {for (Command command : orders) {command.execute();}}
}

使用:

public class Client {public static void main(String[] args) {RoastCook receiver = new RoastCook();Command roastMeatCommand = new RoastMeatCommand(receiver);Command roastFishCommand1 = new RoastFishCommand(receiver);Command roastFishCommand2 = new RoastFishCommand(receiver);Command roastFishCommand3 = new RoastFishCommand(receiver);Waiter waiter = new Waiter();waiter.setOrder(roastFishCommand1);waiter.setOrder(roastFishCommand2);waiter.setOrder(roastMeatCommand);waiter.setOrder(roastFishCommand3);waiter.cancelOrder(roastFishCommand2);waiter.notifyCommand();}
}

输出:

下单:烤鱼
下单:烤鱼
下单:烤肉
下单:烤鱼
取消:烤鱼
烤鱼
烤肉
烤鱼
http://www.yayakq.cn/news/276252/

相关文章:

  • 手机网站html5公司推广做哪个网站吗
  • 深圳网站做优化哪家公司好wordpress默认头像不显示
  • 网站建设 吉林wordpress新建页面是空白的
  • 企业建设一个自己的网站多少钱怎么做网站搜索关键词
  • 专业网站名词解释wordpress瀑布流分页
  • 哈尔滨网站设计联系方式怎么把底部的wordpress
  • 维护公司网站建设深圳龙华建网站公司
  • 网站推广连接怎么做的网站建设与维护流程
  • 网站的栏目建设在哪里效果图网址
  • 网站主要盈利模式网站建设专家如何选
  • 信息型网站黑龙江省住房和城乡建设部网站
  • 网站做虚假宣传有没有做处罚广州番禺区好玩的景点
  • 鲜花购物网站源码企业策划书范文案例
  • 做网站必须会东莞保安公司联系电话
  • 河南省做网站的公司有没有教做化学药品的网站
  • 新郑市建设局网站网站建设公司比较好的有哪些
  • 罗湖小学网站建设南雄市建设局网站
  • 旅游网站有哪些功能别人买了域名做违法网站
  • 网站开发项目比赛wordpress页面编辑乱码
  • 使用wordpress做网站网页设计与制作教程第二版刘瑞新
  • 网站布局设计分析特点wordpress西班牙语
  • 怎样自做网站租房注册公司需要什么资料
  • 有什么发布做投标报价的网站秦皇岛手机网站
  • 黑龙江网站设计产品网络营销
  • 南宁会制作网站的技术人员北京cms建站系统
  • 管理类手机网站山西建设机械网站
  • 佛山市官网网站建设企业无限动力网站
  • 个人资料库网站怎么做企业官方网站模板下载
  • 长春网站推广优化公司关键词优化推广公司哪家好
  • 定制设计网站万州做网站的公司