日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

HeadFirst设计模式-命令模式

發(fā)布時間:2023/12/10 asp.net 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HeadFirst设计模式-命令模式 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

定義

命令模式——將請求封裝成對象,這可以讓你使用不同的請求、隊列,或者日志請求來參數(shù)化其他對象。命令模式也可以支持撤銷操作。

實例

餐廳點餐

以餐廳為例,顧客點餐,服務(wù)員記錄訂單,后移交給后廚制作。服務(wù)員是不用具體知道菜品是如何制作的,只需要記錄下菜名,移交給后廚。服務(wù)員實際上將顧客和后廚解耦了,他們之間通過一個個菜品名,即一個個命令產(chǎn)生聯(lián)系。不同的菜品可以互相組合,同樣命令也可以互相組合。

下面列出餐廳對象與命令模式對象的對應(yīng)關(guān)系:

餐廳命令模式
顧客Client
訂單Command
廚師Receiver
服務(wù)員Invoker
移交訂單setCommand()
制作菜品execute()

實現(xiàn)命令接口

首先,讓所有的命令對象實現(xiàn)相同的包含一個方法的接口。在餐廳例子中,這個方法為制作菜品orderUp(),然而,現(xiàn)在改為一般慣用的名稱execute()。這就是命令接口:

public interface Command {public void execute(); }

實現(xiàn)一個制作魚湯的命令

現(xiàn)在,菜單中有魚湯這個菜品,廚師制作魚湯,來看下如何實現(xiàn)成一個命令:

public class FishSoupCommand implements Command {FishSoup fishSoup;public FishSoupCommand(FishSoup fishSoup) {this.fishSoup = fishSoup;}public void execute() {// 制作魚湯FishSoup.cooking();} }

使用命令對象

把一切簡化,看下這個訂單如何完成:

public class SimpleOrder {Command cmd;public SimpleOrder() {}public void setCommand(Command command) {cmd = command;}// 點餐public void orderUp() {cmd.execute();} }

簡單測試

下面來看顧客點了一個魚湯后的測試代碼:

// 這是命令模式的顧客 public class simpleOrderTest {public statci void main(Stringp[] args) {// 調(diào)用者,會傳入一個命令對象,可以用來發(fā)出請求SimpleOrder simpleOrder = new SimpleOrder();FishSoup fishSoup = new FishSoup();// 創(chuàng)建一個命令,將接收者傳給它FishSoupCommand fishSoupCommand = new FishSoupCommand(fishSoup);// 把命令傳給調(diào)用者simpleOrder.setCommand(fishSoupCommand);// 命令執(zhí)行simpleOrder.orderUp();} }

小結(jié)

  • 命令模式將發(fā)出的對象和執(zhí)行請求的對象解耦。

  • 在被解耦的兩者之間是通過命令對象進行溝通的。命令對象封裝了接收者和一個或一組動作。

  • 調(diào)用者通過調(diào)用命令對象的execute()發(fā)出請求,這會使得接收者的動作被調(diào)用。

  • 調(diào)用者可以接受命令當(dāng)做參數(shù),甚至在運行時動態(tài)地進行。

  • 命令可以支持撤銷,做法是實現(xiàn)一個undo()方法來回到execute()被執(zhí)行前的狀態(tài)。

  • 宏命令是命令的一種簡單的延伸,允許調(diào)用多個命令。宏方法也可以支持撤銷。

  • 實際操作時,很常見使用聰明命令對象,也就是直接實現(xiàn)了請求,而不是將工作委托給接收者。

  • 命令也可以用來實現(xiàn)日志和事務(wù)系統(tǒng)。

  • 總結(jié)

    以上是生活随笔為你收集整理的HeadFirst设计模式-命令模式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。