C 設計模式之命令

2022-03-02 16:25:03 字數 1892 閱讀 4301

1

///2

///控制中心

3///

4public

class

centercontroller511

}12///13

///部件

14///

15public

class

compontecase

1621 }

從上面的「控制中心」中可以看出,它是直接使用的部件,如果這時候要新增、修改或者刪除部件的攻擊方式,那麼「控制中心」也要跟著做出修改。 耦合度很大,那怎麼樣要使「控制中心」和「部件」之間變得是松耦合呢?

命令模式的定義:將一組行為抽象為物件實現二者之間的松耦合

1

///2

///抽象命令

3///

4public

abstract

class

command58

///9

///具體命令類(示例部件攻擊命令)

10///

11public

class

realizecommand : command

1219 }

新增了抽象命令類和具體命令類,具體命令類已經代表了乙個命令,就是示例部件攻擊:

1

///2

///控制中心

3///

4public

class

centercontroller511

public

void

attact()

1215 }

稍作修改的控制中心,

現在再來看一下,使用」控制中心」去使用攻擊手段。

1 centercontroller centercontroller = new centercontroller(new

realizecommand());

2 centercontroller.attact();

也可以再新建其它的具體命令類,引用其它部件,使用其攻擊方法,這樣便實現了動態注入,把控制中心和部件

從緊耦合狀態改變到了松耦合。

這裡會有人有疑問了,如果要執行多個命令怎麼辦?

1

///2

///命令板

3///

4public

class

commandlist58

public commandlist(command command)//

動態注入912

public

void

addcommand(command command)

1316

public

void

removecommand(command command)

1720

public

void

execute()

2126

}27 }

新增乙個命令板類,再修改一下控制中心,使得「控制中心」和「抽象命令」間都進行消耦,下面再看一下修改後的「控制中心」:

1

///2

///控制中心

3///

4public

class

centercontroller511

public

void

attact()

1215 }

使用的方式還是和上乙個方式相同,只是上個方式是把命令動態注入,現在修改成了把命令板動態注入。

命令模式就到這裡了。。end

出處:

設計模式之命令模式 c

命令模式的作用是將函式轉換為物件,將實際的操作與並行的框架分離,命令模式屬於行為級 類圖如下 於c 程式設計思想 class task class taskrunner taskrunner operator taskrunner taskrunner const taskrunner static...

C 設計模式之命令模式

命令模式 講乙個請求封裝為乙個物件,從而讓我們可用不同的請求對客戶進行引數化 對請求排隊或者記錄請求日誌,命令模式是一種行為性模式。命令模式可以將請求傳送者和接受者完全解耦,傳送者和接收者之間沒有直接引用關係。協議處理類 class handleclientprotocol void adddiam...

c 設計模式之命令模式

命令模式 場景 對乙個物件要進行很多動作,每個動作就是乙個命令。在原有的邏輯中,需要在客戶端寫出許多分支語句,針對內個動作,呼叫該物件類的成員函式。每增加乙個動作,都需要在客戶端和物件類中修改 違背了高內聚,低耦合的原則。因此,對於這種情況就可以使用命令模式。組成元素 1.抽象命令類 2.具體命令類...