命令模式(22)

2022-02-14 05:44:56 字數 2774 閱讀 3093

今天我們來講一下命令模式。

一、案例

我們去燒烤店吃燒烤,給我們烤羊肉串和雞翅。用簡單的控制台應用程式來模擬一下。

1

///2

///烤肉串者

3///

4public

class

barbecurer510

11public

void

bakechickenwing()

1215 }

客戶端呼叫:

1

public

static

void

main()

2

二、演繹

1、第一步演繹

如果燒烤店裡有好多人,都要了若干的烤串和雞翅,那麼,烤肉串者怎麼記得誰點了什麼,點了多少串呢?這樣就會亂掉了。如何解決這個問題呢?我們需要服務員,需要選單,這樣就可以分清了。好,我們來修改一下我們的**。

1

///2

///烤肉串者

3///

4public

class

barbecurer510

11public

void

bakechickenwing()

1215}16

//抽象命令類

17public

abstract

class

command

1825

26abstract

public

void

excutecommand();27}

28//

烤雞翅命令

29class

bakechickenwingcommand : command

3034

public

override

void

excutecommand()

3538}39

//服務員

40public

class

waiter

4148

49public

void

notify()

5053 }

客戶端呼叫:

1

public

static

void

main()

2

2、第二步演繹

在這裡,我們還有幾個問題

①真實情況並不是客戶點乙個菜服務員就去通知廚房做乙個菜,而是客戶點完之後,服務員再報給廚房製作。

②如果某樣菜沒了,客戶是不知道的,應該由服務員或者廚師來判斷這個菜是否還有。

③客戶點了很多東西,是需要記錄下來的,以便後面結賬使用。

④如果客戶點完菜了,覺得點多了,需要取消幾樣菜。

好,針對上述問題,我們再來修改一下**:

我們需要修改一下服務員類

1

//服務員

2public

class

waiter313

else

1418}19

//取消訂單

20public

void

cancelorder(command command)

2125

//通知全部執行

26public

void

notity()

2733

}34 }

客戶端呼叫:

1

public

static

void

main()

2

這樣,我們的問題都解決了,以上呢,其實就是用到了命令模式。

好,下面我們來總結一下命令模式:

命令模式:講乙個請求封裝為乙個物件,從而使你可用不同的請求對客戶進行引數化對請求排隊或記錄請求日誌,以及支援可撤銷的操作。

來看一下命令模式的基本**:

1

///2

///宣告執行操作的介面

3///

4abstract

class

command512

13abstract

public

void

execute();14}

15///

16///

具體的命令操作

17///

18class

concretecommand:command

1924

25public

override

void

execute()

2629}30

//命令的接受者

31class

receiver

3237}38

//要求該命令執行這個請求

39class

invoker

4047

48public

void

executecommand()

4952 }

客戶端呼叫:

1

public

static

void

main()

2

以上就是命令模式的基本**。

linux命令(22) mkdir命令

例項1 建立乙個空目錄 mkdir test 例項2 遞迴建立多個目錄 mkdir p home test 例項3 建立許可權為777的目錄 mkdir m 777 test 例項4 建立新目錄都顯示資訊 mkdir v test 例項5 乙個命令建立專案的目錄結構 mkdir vp test lo...

22種設計模式 裝飾者模式

裝飾模式是一種結構型設計模式,允許你通過將物件放入包含行為的特殊封裝物件中來為原物件繫結新的行為。注意,裝飾模式和橋接模式很相似,沒學過橋接模式的小夥伴,可以看這篇部落格 22種設計模式 橋接模式。裝飾者模式和橋接模式的出發點都是一樣的,都是為了解決類 的問題,先講下這個問題 舉個例子,比如星巴克賣...

Golang設計模式 22裝飾者模式

其他設計模式 是指在不改變原有物件的基礎之上,將功能附加到物件上.提供了比繼承更靈活的替代方法,屬於結構型模式 動態的給乙個物件增加一些額外的職責,就增加功能來說,裝飾模式相比生產子類更為靈活 使用裝飾模式進行系統設計時將產生很多小物件,這些物件的區別在於它們之間相互連線的方式有所不同,而不是它們的...