Python設計模式之命令模式原理與用法實例分析
本文實例講述了Python設計模式之命令模式原理與用法。分享給大家供大家參考,具體如下:
命令模式(Command Pattern):將請求封裝成對象,從而使可用不同的請求對客戶進行參數(shù)化;對請求排隊或記錄請求日志,以及支持可撤消的操作.
下面是一個命令模式的demo:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
__author__ = 'Andy'
"""
大話設計模式
設計模式——命令模式
命令模式(Command Pattern):將請求封裝成對象,從而使可用不同的請求對客戶進行參數(shù)化;對請求排隊或記錄請求日志,以及支持可撤消的操作.
"""
# 命令類
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í)行命令
上面類的設計如下圖:

優(yōu)點:
可以較容易的設計一個命令隊列
可以較容易的將命令記入日志
允許接收請求的一方?jīng)Q定是否要否決請求
可以容易的實現(xiàn)對請求的撤銷和重做
加進新的具體命令類不影響其他的類,因此增加新的具體命令類很容易
命令模式最大的優(yōu)點是 把請求一個操作的對象與知道怎么執(zhí)行一個操作的對象分割開
更多關于Python相關內容可查看本站專題:《Python數(shù)據(jù)結構與算法教程》、《Python Socket編程技巧總結》、《Python函數(shù)使用技巧總結》、《Python字符串操作技巧匯總》及《Python入門與進階經(jīng)典教程》
希望本文所述對大家Python程序設計有所幫助。
相關文章
Django REST Framework序列化外鍵獲取外鍵的值方法
今天小編就為大家分享一篇Django REST Framework序列化外鍵獲取外鍵的值方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-07
Python中使用matplotlib繪制mqtt數(shù)據(jù)實時圖像功能
這篇文章主要介紹了Python中使用matplotlib繪制mqtt數(shù)據(jù)實時圖像,本代碼中publish是一個死循環(huán),數(shù)據(jù)一直往外發(fā)送,詳細代碼跟隨小編一起通過本文學習下吧2021-09-09
pandas數(shù)據(jù)合并與重塑之merge詳解
這篇文章主要介紹了pandas數(shù)據(jù)合并與重塑之merge,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-02-02

