


/**
-
@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());
}
}
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|