java命令模式;

package design;
//烧烤师傅(厨师)
public class Barbecuer{
public void bakeMutton(){
System.out.println("烤羊肉串儿");
}
public void bakeChicken(){
System.out.println("烤鸡肉串儿");
}
}
package design;
public class Main{
public static void main(String[] args){
//老板到位了
Barbecuer boy=new Barbecuer();
Command bakeMutton=new BakeMuttonCommand(boy);
Command bakeChicken=new BakeChickenCommand(boy);
Waiter girl=new Waiter();
girl.setOrder(bakeMutton);
girl.setOrder(bakeChicken);
girl.setOrder(bakeChicken);
girl.removeCommand(bakeMutton);
girl.notifyBarbecuer();
}
}
package design;
import java.util.*;
public class Waiter{
//发送命令-命令中包含了对象执行
private Command command;
private List<Command> orders=new ArrayList();
//设置订单;
public void setOrder(Command command){
this.command=command;
orders.add(command);
//this.notifyBarbecuer();
}
//通知厨师执行
public void notifyBarbecuer(){
for(Command c:orders){
command.excuteCommand();
//orders.remove(command);//清空
}
}
public void removeCommand(Command cc){
orders.remove(cc);
}
}
package design;
//做规范
public abstract class Command{
public Barbecuer bb;//厨师
public Command(Barbecuer bb){
this.bb=bb;
}
//执行命名的方法
abstract public void excuteCommand();
}
package design;
public class BakeMuttonCommand extends Command{
public BakeMuttonCommand(Barbecuer rr){
super(rr);
}
public void excuteCommand(){
bb.bakeMutton();
}
}
package design;
public class BakeChickenCommand extends Command{
public BakeChickenCommand(Barbecuer rr){
super(rr);
}
public void excuteCommand(){
bb.bakeChicken();
}
}

越努力,越幸运!!!
good good study,day day up!!!
浙公网安备 33010602011771号