亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

【設(shè)計(jì)模式】命令模式

系統(tǒng) 1881 0

命令模式:

通過訂單實(shí)現(xiàn)服務(wù)員與廚師的完全解耦

服務(wù)員不關(guān)心訂單的具體內(nèi)容是什么,只需要將訂單交給廚師即可

角色劃分

訂單 :Command

服務(wù)員 :Invoker

廚師 :Receiver

?

使用命令模式可以實(shí)現(xiàn)工作隊(duì)列,將接收到的命令放到BlockingQueue中

任務(wù)執(zhí)行者從BlockingQueue中獲取任務(wù)即可

?

?
【設(shè)計(jì)模式】命令模式
?

?

      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
/**
 * 訂單內(nèi)部封裝:1.點(diǎn)餐項(xiàng)目  2.廚師
 * 命令對(duì)象的作用:實(shí)現(xiàn)服務(wù)員Invoker與廚師Receiver之間完全解耦
 */
class CookOrder implements Order {
	
	List<String> items = new ArrayList<String>();
	
	public Order add(String item) {
		items.add(item);
		return this;
	}
	
	//內(nèi)部維護(hù)一個(gè)工作隊(duì)列
	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
/**
 * 服務(wù)員并不關(guān)心訂單上的具體內(nèi)容是什么
 * 只負(fù)責(zé)接收訂單命令,并調(diào)用orderUp()-即execute()
 * 
 * 服務(wù)員與廚師之間通過"訂單對(duì)象"實(shí)現(xiàn)了解耦!
 */
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;

/**
 * 真正執(zhí)行任務(wù)的對(duì)象
 */
public class Chief {
	//廚師接收到具體訂單內(nèi)容,開始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:命令對(duì)象封裝【命令的接收者】和【具體的任務(wù)】
		Order order1 = new CookOrder(chief);
		order1.add("coffee").add("bread");
		giveOrderToWaitress(order1);

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

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

    

?

【設(shè)計(jì)模式】命令模式


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

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

【本文對(duì)您有幫助就好】

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

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 亚洲成a人在线播放www | 欧美黑人乱大交ⅹxxxxx | 国产91久久精品一区二区 | 亚洲精品日韩中文字幕久久久 | 精品日韩二区三区精品视频 | 欧美性猛片xxxxⅹ免费 | 亚洲精品欧洲精品 | 日韩欧美国产一区二区三区四区 | 99在线精品免费视频 | 日日操天天| aaaa级日本片免费视频 | 精品成人在线视频 | 国产成人精品免费大全 | 日日夜夜操美女 | 青青草国产97免久久费观看 | 末成年娇小性色xxxxx视频 | 亚洲综合精品香蕉久久网97 | 午夜亚洲国产精品福利 | 中文字幕最新在线 | 青青青在线视频人视频在线 | 国产日本欧美亚洲精品视 | 国产精品九九久久精品女同 | 免费精品久久久久久中文字幕 | 国产福利视频一区 | 亚洲欧美综合久久 | 亚洲午夜久久久精品影院视色 | 国产在线精品一区二区高清不卡 | 精品一区二区三区的国产在线观看 | 欧美在线视频在线观看 | 九九九九九九精品免费 | 97dyy在线观看手机版 | 成人免费观看www视频 | 爱爱免费观看高清视频在线播放 | 国内精品视频九九九九 | 四虎日韩| www四虎影院 | 色综合天天色综合 | 欧美日韩中文字幕在线观看 | 91福利精品老师国产自产在线 | 中文字幕一区日韩在线视频 | 免费一级特黄3大片视频 |