命令模式(command p程式設計客棧attern):將請求封裝成物件,從而使可用不同的請求對客戶進行引數化;對請求排隊或記錄請求日誌,以及支援可撤消的操作.
下面是乙個命令模式的demo:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
__author__ = 'andy'
"""大話設計模式
設計模式——命令模式
命令模式(command pattern):將請求封裝成物件,從而使可用不同的請求對客戶進行引數化;對請求排隊或記錄請求日誌,以及支援可撤消的操作.
"""# 命令類
class command(object):
def __init__(self, receiver):
self.receiver = receiver
def execute(self):
pass
# 執行接收者的操作
class concretecommand(command):
def execute(self):
self.receiver.action()
# 接收命令
class invoker(object):
def __init__(self):
self.command = ''
def setcommand(self,command):
self.command = command
def excutecommand(self):nnrxmmw
self.command.execute()
# 具體執行類
class receiver(object):
def action(self):
print "執行請求"
if __name__ == "__main__":
r = receiver() #建立需要執行的命令
c = concretecommand(r) # 繫結要執行的命令
i = invoker() # 建立命令執行者
i.setcommand(c) # 接受命令
i.excutecommand() # 執行命令
上面類的設計如下圖:
優點:可以較容易的設計乙個命令佇列
可以較容nnrxmmw易的將命令記入日誌
允許接收請求的一方決定程式設計客棧是否要否決請求
可程式設計客棧以容易的實現對請求的撤銷和重做
加進新的具體命令類不影響其他的類,因此增加新的具體命令類很容易
命令模式最大的優點是 把請求乙個操作的物件與知道怎麼執行乙個操作的物件分割開
設計模式之命令設計模式
先來看一下命令模式的類圖 乍一看好像類很多,其實我們逐個分析他們。類圖中存在的類可以分為 invoker icommand conceretecommand receiver invoker類 上層直接調取invoker類 icommand 是對命令的抽象 conceretecommand 是命令的...
設計模式之命令模式
command pattern 將請求封裝成物件,這可以讓你使用不同的請求,佇列,或者是日誌請求來引數化其他物件,命令模式也可以支援撤銷操作。命令模式有兩種實現方式 1.在命令管理器中提供設定當前命令接受者的方法,當執行訊息或者是有訊息壓入的時候直接將命令傳送給當前設定的接受者。2.在命令管理器中建...
設計模式之命令模式
當我們有一台多功能的印表機,然後通過電腦直接進行任務,如圖 如果通過這樣的設計直接去呼叫多功能一體機的功能,就會存在此時此刻只能進行乙個任務,不允許有多個客戶端同時操作.那麼現在我們就需要考慮一種新的設計模式,叫做命令設計模式。命令設計模式 將乙個請求封裝為乙個物件,從而使你可用不同的請求對客戶進行...