欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python設(shè)計(jì)模式之命令模式原理與用法實(shí)例分析

 更新時(shí)間:2019年01月11日 09:40:39   作者:Andy冉明  
這篇文章主要介紹了Python設(shè)計(jì)模式之命令模式,結(jié)合具體實(shí)例形式分析了Python命令模式相關(guān)概念、原理、定義及使用方法,需要的朋友可以參考下

本文實(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)文章

最新評論