java 设计模式 命令模式_《JAVA设计模式》——命令模式

本文通过一个Java程序实例展示了如何运用命令模式来模拟饭店点餐过程。顾客点餐时,订单被交给对应菜系的厨师制作。命令模式使得在执行点餐操作时才确定具体的厨师,实现了行为的抽象和解耦。代码包括菜品做法接口、具体菜品实现、顾客类以及点餐模拟,输出结果展示了不同菜品由不同厨师制作的过程。
摘要由CSDN通过智能技术生成

生活中在饭店吃饭,张三点了的“鱼香肉丝”,然后服务员将订单交给后厨的川菜师傅做;李四点了“木须肉”,然后服务员将订单交给后厨的鲁菜师傅做;王五点了“白切鸡”,然后服务员将订单交给后厨的粤菜师傅做……如果用java程序来模拟这个点餐过程就用到了所谓的“命令模式”。其定义是这样的:某个方法需要完成某一个行为(所有菜都要厨师做),但这个行为的具体实现无法确定(不同菜系对应不同厨师),必须等到执行该方法时才可以确定(顾客点餐后交给不同厨师)。具体实现代码如下:

1.菜品做法标准:

public interface Menu {

//所有的菜都要让厨师做,但具体哪个厨师做不清楚

public abstract void cooking();

}

2.鱼香肉丝做法:

public class yxrs implements Menu {

//重写方法,鱼香肉丝是川菜厨师做

@Override

public void cooking() {

System.out.println("川菜大厨正在做鱼香肉丝");

}

}

3.木须肉做法:

public class mxr implements Menu {

//重写方法,木须肉是鲁菜厨师做

@Override

public void cooking() {

System.out.println("鲁菜大厨正在做木须肉");

}

}

4.白切鸡做法:

public class bqj implements Menu {

//重写方法,白切鸡是粤菜厨师做

@Override

public void cooking() {

System.out.println("粤菜大厨做正在白切鸡");

}

}

5.定义顾客类:

public class Customer {

//顾客姓名变量

public String name;

//构造器

public Customer(String name) {

this.name = name;

}

//点餐行为

public void order(Menu menu) {

System.out.print(this.name+"完成点餐。");

menu.cooking();

}

}

6.模拟点餐:

public class Test {

public static void main(String[] args) {

//饭店菜单

Menu yxrs = new yxrs();

Menu mxr = new mxr();

Menu bqj = new bqj();

//张三点鱼香肉丝

Customer zs = new Customer("张三");

zs.order(yxrs);

//李四点木须肉

Customer ls = new Customer("李四");

ls.order(mxr);

//王五点白切鸡

Customer ww= new Customer("王五");

ww.order(bqj);

}

}

输出:

张三完成点餐。川菜大厨正在做鱼香肉丝

李四完成点餐。鲁菜大厨正在做木须肉

王五完成点餐。粤菜大厨做正在白切鸡

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值