欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

【設計模式】命令模式

系統 1958 0

命令模式:

通過訂單實現服務員與廚師的完全解耦

服務員不關心訂單的具體內容是什么,只需要將訂單交給廚師即可

角色劃分

訂單 :Command

服務員 :Invoker

廚師 :Receiver

?

使用命令模式可以實現工作隊列,將接收到的命令放到BlockingQueue中

任務執行者從BlockingQueue中獲取任務即可

?

?
【設計模式】命令模式
?

?

      package pattern.command;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ArrayBlockingQueue;


//Command
public interface Order {
	Order add(String item);
	void execute();
}

//ConcreteCommand
/**
 * 訂單內部封裝:1.點餐項目  2.廚師
 * 命令對象的作用:實現服務員Invoker與廚師Receiver之間完全解耦
 */
class CookOrder implements Order {
	
	List<String> items = new ArrayList<String>();
	
	public Order add(String item) {
		items.add(item);
		return this;
	}
	
	//內部維護一個工作隊列
	ArrayBlockingQueue<List<String>> blokingQueue = new ArrayBlockingQueue<List<String>>(100);

	//Receiver
	Chief chief;
	
	public CookOrder(Chief chief) {
		this.chief = chief;
	}
	
	public void execute() {
		blokingQueue.add(items);
		chief.cook(this);
	}
}
    

?

      package pattern.command;

//Invoker
/**
 * 服務員并不關心訂單上的具體內容是什么
 * 只負責接收訂單命令,并調用orderUp()-即execute()
 * 
 * 服務員與廚師之間通過"訂單對象"實現了解耦!
 */
public class Waitress {
	//Command
	Order order;
	
	public void setRoder(Order order) {
		this.order = order;
	}
	
	public void serve() {
		order.execute();
	}
}

    

?

      package pattern.command;

import java.util.List;

/**
 * 真正執行任務的對象
 */
public class Chief {
	//廚師接收到具體訂單內容,開始cook
	public void cook(CookOrder cookOrder) {
		try {
			List<String> items = cookOrder.blokingQueue.take();
			System.out.println("Chief cooking: " + items);
			Thread.sleep(1000);
		} catch (InterruptedException e) {}
	}

}

    

?

      package pattern.command;

public class Client {
	public static void main(String[] args) {
		// Receiver
		Chief chief = new Chief();

		// Command:命令對象封裝【命令的接收者】和【具體的任務】
		Order order1 = new CookOrder(chief);
		order1.add("coffee").add("bread");
		giveOrderToWaitress(order1);

		// Command:命令對象封裝【命令的接收者】和【具體的任務】
		Order order2 = new CookOrder(chief);
		order2.add("tea").add("bread");
		giveOrderToWaitress(order2);
	}

	private static void giveOrderToWaitress(Order order) {
		// Invoker:負責將命令對象傳遞給執行者
		Waitress waitress = new Waitress();
		// setCommand
		waitress.setRoder(order);
		waitress.serve();
	}
}

    

?

【設計模式】命令模式


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产成人一区二区三区 | 狠狠色依依成人婷婷九月 | 久久国产精品一区二区 | 久久aⅴ乱码一区二区三区 日韩精品一区二区在线观看 | 无码激情做A爰片毛片A片小说 | 亚洲已满18点击进入在线观看 | 午夜视频直播 | 欧美日韩一二区 | 婷婷尹人香蕉久久天堂 | 欧美特黄a级高清免费看片 欧美精品一二区 | 午色影院 | 欧美精品免费在线 | 欧美日韩一区二区三区高清不卡 | 亚洲色欲色欲www | 奇米色777欧美一区二区 | 一区二区视频在线 | 精品粉嫩aⅴ一区二区三区四区 | 国产精品不卡一区 | 91久久精品一区二区二区 | 日韩中文在线观看 | 亚欧精品一区二区三区四区 | 一区二区三区视频免费 | 国产一国产一区秋霞在线观看 | 久久精品视频99 | 亚洲毛片大全 | 久久中文在线 | 欧美日韩国产网站 | 国产精品日本欧美一区二区 | 国产精品久久久久无码人妻精品 | 国产一区二区免费 | 免费午夜不卡毛片 | 91视频官网 | 贺鹏个人资料 | 亚洲精品国产电影 | 欧美一性一乱一交 | 欧美精品一区二区三区在线 | 日日夜夜免费精品视频 | 9久热这里只有精品视频在线观看 | 日韩aⅴ一区二区三区 | 魔法骑士在线观看免费完整版 | 日日天天 |