《JAVA设计模式》——命令模式

Java sxdgy 508℃

生活中在饭店吃饭,张三点了的“鱼香肉丝”,然后服务员将订单交给后厨的川菜师傅做;李四点了“木须肉”,然后服务员将订单交给后厨的鲁菜师傅做;王五点了“白切鸡”,然后服务员将订单交给后厨的粤菜师傅做……如果用java程序来模拟这个点餐过程就用到了所谓的“命令模式”。其定义是这样的:某个方法需要完成某一个行为(所有菜都要厨师做),但这个行为的具体实现无法确定(不同菜系对应不同厨师),必须等到执行该方法时才可以确定(顾客点餐后交给不同厨师)。具体实现代码如下:

1.菜品做法标准:

public interface Menu {
	//所有的菜都要让厨师做,但具体哪个厨师做不清楚
	public abstract void cooking();
}

2.鱼香肉丝做法:

public class yxrs implements Menu {
	//重写方法,鱼香肉丝是川菜厨师做
	@Override
	public void cooking() {
		System.out.println("川菜大厨正在做鱼香肉丝");
	}
}

3.木须肉做法:

public class mxr implements Menu {
	//重写方法,木须肉是鲁菜厨师做
	@Override
	public void cooking() {
		System.out.println("鲁菜大厨正在做木须肉");
	}
}

4.白切鸡做法:

public class bqj implements Menu {
	//重写方法,白切鸡是粤菜厨师做
	@Override
	public void cooking() {
		System.out.println("粤菜大厨做正在白切鸡");
	}
}

5.定义顾客类:

public class Customer {
	//顾客姓名变量
	public String name;
	//构造器
	public Customer(String name) {
		this.name = name;
	}
	//点餐行为
	public void order(Menu menu) {
		System.out.print(this.name+"完成点餐。");
		menu.cooking();
	}
}

6.模拟点餐:

public class Test {
	public static void main(String[] args) {
		//饭店菜单
		Menu yxrs = new yxrs();
		Menu mxr = new mxr();
		Menu bqj = new bqj();
		//张三点鱼香肉丝
		Customer zs = new Customer("张三");
		zs.order(yxrs);
		//李四点木须肉
		Customer ls = new Customer("李四");
		ls.order(mxr);
		//王五点白切鸡
		Customer ww= new Customer("王五");
		ww.order(bqj);
	}
}

输出:
张三完成点餐。川菜大厨正在做鱼香肉丝
李四完成点餐。鲁菜大厨正在做木须肉
王五完成点餐。粤菜大厨做正在白切鸡

转载请注明:零五博客 » 《JAVA设计模式》——命令模式