/**
-
@Author: cxh
-
@CreateTime: 18/1/26 15:52
-
@ProjectName: JavaBaseTest
*/
public abstract class AbstractCommand{
protected Barbecuer barbecuer;
AbstractCommand(){}
//执行命令
public abstract void exeCommmand();
}
/**
- @Author: cxh
- @CreateTime: 18/1/26 16:10
- @ProjectName: JavaBaseTest
*/
public class BakeChickenWingCmd extends AbstractCommand{
BakeChickenWingCmd(Barbecuer barbecuer){
super.barbecuer=barbecuer;
}
@Override
public void exeCommmand() {
super.barbecuer.bakeChickenWing();
}
}
/**
- @Author: cxh
- @CreateTime: 18/1/26 16:13
- @ProjectName: JavaBaseTest
*/
public class BakeMuttonCmd extends AbstractCommand {
BakeMuttonCmd(Barbecuer barbecuer){
super.barbecuer=barbecuer;
}
@Override
public void exeCommmand() {
super.barbecuer.bakeMutton();
}
}
/**
- @Author: cxh
- @CreateTime: 18/1/26 16:04
- @ProjectName: JavaBaseTest
*/
public class Barbecuer{
public void bakeMutton(){
System.out.println("烤羊肉串~");
}
public void bakeChickenWing(){
System.out.println("烤鸡翅~");
}
}
/**
-
@Author: cxh
-
@CreateTime: 18/1/26 15:52
-
@ProjectName: JavaBaseTest
*/
public class Client{
//测试类
public static void main(String[] args) {
Waiter waiter=new Waiter();
Barbecuer cook=new Barbecuer();
BakeChickenWingCmd chickenWingCmd=new BakeChickenWingCmd(cook);
BakeMuttonCmd muttonCmd=new BakeMuttonCmd(cook);
waiter.acceptRequest(chickenWingCmd);
waiter.acceptRequest(muttonCmd);
//通知厨师
waiter.notifyCook();
}
}
import java.util.ArrayList;
import java.util.List;
/**
- @Author: cxh
- @CreateTime: 18/1/26 15:56
- @ProjectName: JavaBaseTest
/
public class Waiter{
//用一个list保存很多请求的引用
List list=new ArrayList<>();
//接受请求
public void acceptRequest(AbstractCommand command){
double a=Math.random() 10;
if(a<=5){
String type=command.getClass().getSimpleName();
if(type.equals("BakeChickenWingCmd"))
type="鸡翅";
else
type="羊肉";
System.out.println("不好意思,"+type+"没有了,您可以看一下其他菜品");
}else{
list.add(command);
System.out.println("记录下单日志,如桌号,时间等");
}
}
//撤销请求
public void cancelRequest(AbstractCommand command){
list.remove(command);
}
//通知后厨做菜
public void notifyCook(){
list.forEach(command -> command.exeCommmand());
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。