Python設(shè)計(jì)模式之命令模式原理與用法實(shí)例分析
本文實(shí)例講述了Python設(shè)計(jì)模式之命令模式原理與用法。分享給大家供大家參考,具體如下:
命令模式(Command Pattern):將請求封裝成對象,從而使可用不同的請求對客戶進(jìn)行參數(shù)化;對請求排隊(duì)或記錄請求日志,以及支持可撤消的操作.
下面是一個(gè)命令模式的demo:
#!/usr/bin/env python # -*- coding:utf-8 -*- __author__ = 'Andy' """ 大話設(shè)計(jì)模式 設(shè)計(jì)模式——命令模式 命令模式(Command Pattern):將請求封裝成對象,從而使可用不同的請求對客戶進(jìn)行參數(shù)化;對請求排隊(duì)或記錄請求日志,以及支持可撤消的操作. """ # 命令類 class Command(object): def __init__(self, receiver): self.receiver = receiver def execute(self): pass # 執(zhí)行接收者的操作 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): self.command.execute() # 具體執(zhí)行類 class Receiver(object): def action(self): print "執(zhí)行請求" if __name__ == "__main__": r = Receiver() #創(chuàng)建需要執(zhí)行的命令 c = ConcreteCommand(r) # 綁定要執(zhí)行的命令 i = Invoker() # 創(chuàng)建命令執(zhí)行者 i.setcommand(c) # 接受命令 i.excutecommand() # 執(zhí)行命令
上面類的設(shè)計(jì)如下圖:
優(yōu)點(diǎn):
可以較容易的設(shè)計(jì)一個(gè)命令隊(duì)列
可以較容易的將命令記入日志
允許接收請求的一方?jīng)Q定是否要否決請求
可以容易的實(shí)現(xiàn)對請求的撤銷和重做
加進(jìn)新的具體命令類不影響其他的類,因此增加新的具體命令類很容易
命令模式最大的優(yōu)點(diǎn)是 把請求一個(gè)操作的對象與知道怎么執(zhí)行一個(gè)操作的對象分割開
更多關(guān)于Python相關(guān)內(nèi)容可查看本站專題:《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python Socket編程技巧總結(jié)》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》及《Python入門與進(jìn)階經(jīng)典教程》
希望本文所述對大家Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
Django REST Framework序列化外鍵獲取外鍵的值方法
今天小編就為大家分享一篇Django REST Framework序列化外鍵獲取外鍵的值方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-07Python中使用matplotlib繪制mqtt數(shù)據(jù)實(shí)時(shí)圖像功能
這篇文章主要介紹了Python中使用matplotlib繪制mqtt數(shù)據(jù)實(shí)時(shí)圖像,本代碼中publish是一個(gè)死循環(huán),數(shù)據(jù)一直往外發(fā)送,詳細(xì)代碼跟隨小編一起通過本文學(xué)習(xí)下吧2021-09-09Python常見數(shù)據(jù)結(jié)構(gòu)詳解
這篇文章主要介紹了Python常見數(shù)據(jù)結(jié)構(gòu),需要的朋友可以參考下2014-07-07Python 存儲字符串時(shí)節(jié)省空間的方法
這篇文章主要介紹了Python 存儲字符串時(shí)節(jié)省空間的方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-04-04pandas數(shù)據(jù)合并與重塑之merge詳解
這篇文章主要介紹了pandas數(shù)據(jù)合并與重塑之merge,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02mac安裝scrapy并創(chuàng)建項(xiàng)目的實(shí)例講解
今天小編就為大家分享一篇mac安裝scrapy并創(chuàng)建項(xiàng)目的實(shí)例講解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-06-06