大话设计模式_命令模式
来源:互联网 发布:知合控股 华夏幸福 编辑:程序博客网 时间:2024/05/21 16:23
以小菜大鸟去烧烤店,给服务员报菜,然后服务员通知厨师为例子。
package com.wzs.design;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Date;import java.util.List;/** * 大话设计模式--page238 命令模式 * * @author Administrator * */public class CommandMode {public static void main(String[] args) {// 开店前准备Barbecuer boy = new Barbecuer();Command bakeMuttonCommand1 = new BakeMuttonCommand(boy);Command bakeMuttonCommand2 = new BakeMuttonCommand(boy);Command bakeChickenWingCommand = new BakeChickenWingCommand(boy);Waiter girl = new Waiter();// 开门营业girl.setOrder(bakeMuttonCommand1);girl.setOrder(bakeMuttonCommand2);girl.setOrder(bakeChickenWingCommand);// 点菜完毕,通知厨房girl.notifyA();}}/* * 烤肉串者 */class Barbecuer {// 烤羊肉串public void bakeMutton() {System.out.println("烤羊肉串!");}// 烤鸡翅public void bakeChickenWing() {System.out.println("烤鸡翅!");}}/* * 抽象命令 */abstract class Command {protected Barbecuer barbecuer;public Command(Barbecuer barbecuer) {this.barbecuer = barbecuer;}// 执行命令public abstract void excuteCommand();}/* * 烤羊肉串命令 */class BakeMuttonCommand extends Command {public BakeMuttonCommand(Barbecuer barbecuer) {super(barbecuer);}@Overridepublic void excuteCommand() {barbecuer.bakeMutton();}@Overridepublic String toString() {return "命令模式,烤羊肉串命令!";}}/* * 烤鸡翅命令 */class BakeChickenWingCommand extends Command {public BakeChickenWingCommand(Barbecuer barbecuer) {super(barbecuer);}@Overridepublic void excuteCommand() {barbecuer.bakeChickenWing();}@Overridepublic String toString() {return "命令模式,烤鸡翅命令! ";}}/* * 服务员 */class Waiter {SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");private List<Command> orders = new ArrayList<Command>();// 设定订单public void setOrder(Command command) {orders.add(command);System.out.println("增加订单:" + command.toString() + " \t时间:" + simpleDateFormat.format(new Date()));}// 取消订单public void cancelOrder(Command command) {orders.remove(command);System.out.println("取消订单:" + command.toString() + " \t时间:" + simpleDateFormat.format(new Date()));}// 通知全部执行public void notifyA() {for (Command command : orders) {command.excuteCommand();}}}
- 大话设计模式_命令模式
- 大话设计模式_命令模式c++实现
- 大话设计-命令模式
- 大话设计模式-命令模式
- 大话设计模式 命令模式
- 大话设计模式-命令模式
- 大话设计模式-----命令模式
- 大话设计模式_简单工厂模式
- 大话设计模式_策略模式
- 大话设计模式_装饰模式
- 大话设计模式_代理模式
- 大话设计模式_工厂方法模式
- 大话设计模式_原型模式
- 大话设计模式_模板方法模式
- 大话设计模式_外观模式
- 大话设计模式_建造者模式
- 大话设计模式_抽象工厂模式
- 大话设计模式_适配器模式
- 第三届蓝桥杯预赛第九题——趣味算式
- 安卓学习路线
- java常见面试题及三大框架面试
- Android线程总结笔记(1)——AsyncTask
- Apache apr中内存分配子的current_free_index成员作用
- 大话设计模式_命令模式
- UpdateData(TRUE)、UpdateData(FALSE)
- 段式液晶学习
- int 15h
- [面向对象起源] 面向对象之父Alan Kay:预测未来,创造未来
- 国家及校级奖项、称号(中英对照)
- Easy Task
- VB导图2.0
- 六、C++ this 指针