zoukankan      html  css  js  c++  java
  • 设计模式 命令模式2

    先写一个厨师类

    
    public class Barbecuer {
    	public void BakeMutton()
    	{
    		System.out.println("烤羊肉串");
    	}
    	
    	public void BakeChickenWing()
    	{
    		System.out.println("烤鸡翅!");
    	}
    }
    
    

    写一个命令类

    
    public abstract class Command {
    	protected Barbecuer receiver;
    	public Command(Barbecuer receiver)
    	{
    		this.receiver=receiver;
    	}
    	abstract public void ExecuteCommand();
    }
    
    

    写两个命令继承command

    
    public class BakeMuttonCommand extends Command{
    
    	public BakeMuttonCommand(Barbecuer receiver) {
    		super(receiver);
    		// TODO Auto-generated constructor stub
    	}
    
    	@Override
    	public void ExecuteCommand() {
    		// TODO Auto-generated method stub
    		receiver.BakeMutton();
    	}
    	
    
    }
    
    
    
    public class BakeChickenWingCommand  extends Command{
    
    	public BakeChickenWingCommand(Barbecuer receiver) {
    		super(receiver);
    		// TODO Auto-generated constructor stub
    	}
    
    	@Override
    	public void ExecuteCommand() {
    		// TODO Auto-generated method stub
    		receiver.BakeChickenWing();
    	}
    
    }
    
    

    再写服务生类

    import java.util.ArrayList;
    import java.util.List;
    import java.util.Timer;
    
    public class Waiter {
    	private List<Command> orders = new ArrayList<Command>();
    	
    	public void SetOrder(Command command)
    	{
    		if(command.toString() == "鸡翅")
    		{
    			System.out.println("服务员:鸡翅没有了,请点别的烧烤。");
    		}
    		else
    		{
    			orders.add(command);
    			System.out.println("增加定点:"+command.toString());
    		}
    	}
    	
    	public void CancelOrder(Command command)
    	{
    		orders.remove(command);
    		System.out.println("取消订单"+command.toString());
    	}
    	
    	public void Notify()
    	{
    		for (Command command : orders) {
    			command.ExecuteCommand();
    		}
    	}
    }
    
    

    最后写测试类

    
    public class Program {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		
    		//开店前得准备
    		Barbecuer boy =new Barbecuer();
    		Command bakeMuttonCommand1 = new BakeMuttonCommand(boy);
    		Command bakeMuttonCommand2= new BakeMuttonCommand(boy);
    		Command bakeChickenWingCommand1 = new BakeChickenWingCommand(boy);
    		Waiter girl=new Waiter();
    		
    		//开门营业 开始点菜
    		girl.SetOrder(bakeMuttonCommand1);
    		girl.SetOrder(bakeMuttonCommand2);
    		girl.SetOrder(bakeChickenWingCommand1);
    		
    		//点菜完毕,通知厨房
    		girl.Notify();
    		
    
    	}
    
    }
    
    
  • 相关阅读:
    解决Web部署 svg/woff/woff2字体 404错误
    Quartz.NET 2.0 作业调度框架使用
    【转】计算机专业不是学编程
    webstorm 上传代码到git
    关于element-ui在打包后图标不显示的问题
    【转】iOS lame编译 arm64 armv7s armv7 x86_64 i386指令集
    SQL Server存储过程简介
    JQuery EasyUI设置input文本框disabled, readonly属性
    ObjectListView控件介绍及C# Demo实现
    WCF 中wsHttpBinding配置实例程序
  • 原文地址:https://www.cnblogs.com/yufenghou/p/6035248.html
Copyright © 2011-2022 走看看