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(newrealizecommand());
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.具體命令類...