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();
		
	}
}

 

 

  

猜你喜欢

转载自www.cnblogs.com/canglongdao/p/13170683.html