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

    这个例子用java写成,我现在发现,java与c#差别不很大

    先写一个厨师类

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

    写服务员类

    public class Waiter {
    	private Command command;
    	
    	public void SetOrder(Command command)
    	{
    		this.command=command;
    	}
    	
    	public void Notify()
    	{
    		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.Notify();
    		girl.SetOrder(bakeMuttonCommand2);
    		girl.Notify();
    		girl.SetOrder(bakeChickenWingCommand1);
    		girl.Notify();
    		
    
    	}
    
    }
    
    
  • 相关阅读:
    索引总结篇
    数据库的安全管理
    数据库备份对日志文件的影响
    数据文件与日志文件读取机制
    更新操作所带来的影响
    页拆分-产生碎片
    你不可不知的T-SQL执行顺序
    实用T-SQL收集
    Left Join的神奇效果
    我对数据库索引的理解
  • 原文地址:https://www.cnblogs.com/yufenghou/p/6035060.html
Copyright © 2011-2022 走看看