亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python設(shè)計(jì)模式之命令模式簡(jiǎn)單示例

 更新時(shí)間:2018年01月10日 10:22:24   作者:李自泰  
這篇文章主要介紹了Python設(shè)計(jì)模式之命令模式,簡(jiǎn)單介紹了命令模式的概念、原理,并結(jié)合實(shí)例形式分析了Python命令模式的定義與使用相關(guān)操作技巧,需要的朋友可以參考下

本文實(shí)例講述了Python設(shè)計(jì)模式之命令模式。分享給大家供大家參考,具體如下:

命令模式介紹:

在面向?qū)ο缶幊讨?,命令模式是概括所有方法信息的設(shè)計(jì)模式。

此模式對(duì)象包涵方法名,及其相關(guān)參數(shù)值。

命令模式是一個(gè)分類的觀察者設(shè)計(jì)模式,在命令模式下,對(duì)象被概括為一個(gè)命令表單,此表單包涵了所有用戶需要的方法。

舉個(gè)例子:如果有個(gè)按鈕是用戶接口“red”,當(dāng)被觸碰的時(shí)候,會(huì)啟動(dòng)后臺(tái)的“turn red”接口?,F(xiàn)在用戶并不知道,通過(guò)什么類或者方法的接口能夠讓后臺(tái)處理“turn red”操作,但是這個(gè)命令被發(fā)送了(觸碰“red”按鈕),會(huì)使得后臺(tái)處理“turn red”操作。因此,命令模式給用戶一個(gè)接口,而不用讓用戶了解哪些是實(shí)際執(zhí)行的程序,也不會(huì)影響到用戶程序。

實(shí)現(xiàn)命令模式的關(guān)鍵就是讓調(diào)用者不要包涵底層實(shí)際命令執(zhí)行代碼,相同的調(diào)用者應(yīng)該采用相同的接口。

命令模式是由三個(gè)組件構(gòu)成,客戶,調(diào)用者,接受者。

客戶:一個(gè)實(shí)例化的對(duì)象

調(diào)用者:決定哪個(gè)方法被調(diào)用

接受者:實(shí)際命令的執(zhí)行者

Example:

實(shí)現(xiàn)一個(gè)開(kāi)關(guān)
切換ON/OFF
用開(kāi)關(guān)ON/OFF去硬編碼一個(gè)事件

代碼如下:

class Switch:
 ''' The INVOKER class'''
 def __init__(self, flipUpCmd, flipDownCmd):
  self.__flipUpCommand = flipUpCmd
  self.__flipDownCommand = flipDownCmd
 def flipUp(self):
  self.__flipUpCommand.execute()
 def flipDown(self):
  self.__flipDownCommand.execute()
class Light:
 '''The RECEIVER Class'''
 def turnOn(self):
  print "The light is on"
 def turnOff(self):
  print "The light is off"
class Command:
 """The Command Abstrace class"""
 def __init__(self):
  pass
 def execute(self):
  pass
class FlipUpCommand(Command):
 '''The Command class for turning on the light'''
 def __init__(self, light):
  self.__light = light
 def execute(self):
  self.__light.turnOn()
class FileDownCommand(Command):
 '''The Command class for turning off the light'''
 def __init__(self, light):
  Command.__init__(self)
  self.__light = light
 def execute(self):
  self.__light.turnOff()
class LightSwitch:
 '''The Client Class'''
 def __init__(self):
  self.__lamp = Light()
  self.__switchUp = FlipUpCommand(self.__lamp)
  self.__switchDown = FileDownCommand(self.__lamp)
  self.__switch = Switch(self.__switchUp, self.__switchDown)
 def switch(self, cmd):
  cmd = cmd.strip().upper()
  try:
   if cmd == "ON":
    self.__switch.flipUp()
   elif cmd == "OFF":
    self.__switch.flipDown()
   else:
    print "Argument \"ON\" or \"OFF\" is required"
  except Exception,msg:
   print "Exception occured:%s" % msg
#Execute if the file is run as a script and not imported as a module
if __name__ == "__main__":
 lightSwitch = LightSwitch()
 print "Switch ON test"
 lightSwitch.switch("ON")
 print "Switch OFF test"
 lightSwitch.switch("OFF")
 print "Invalid Command test"
 lightSwitch.switch("****")

運(yùn)行結(jié)果:

總結(jié):面向?qū)ο蟮姆椒?,就是這么牛叉啊,代碼看得讓人頭暈,層層的封裝。警惕面向?qū)ο缶幊痰倪^(guò)度對(duì)象化。

更多關(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)典教程

希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • Python內(nèi)置函數(shù)詳談

    Python內(nèi)置函數(shù)詳談

    本篇文章主要介紹了Python內(nèi)置函數(shù)的使用方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2021-10-10
  • Python二叉搜索樹(shù)與雙向鏈表轉(zhuǎn)換實(shí)現(xiàn)方法

    Python二叉搜索樹(shù)與雙向鏈表轉(zhuǎn)換實(shí)現(xiàn)方法

    這篇文章主要介紹了Python二叉搜索樹(shù)與雙向鏈表轉(zhuǎn)換實(shí)現(xiàn)方法,涉及Python二叉搜索樹(shù)的定義、實(shí)現(xiàn)以及雙向鏈表的轉(zhuǎn)換技巧,需要的朋友可以參考下
    2016-04-04
  • python將unicode和str互相轉(zhuǎn)化的實(shí)現(xiàn)

    python將unicode和str互相轉(zhuǎn)化的實(shí)現(xiàn)

    這篇文章主要介紹了python將unicode和str互相轉(zhuǎn)化的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-05-05
  • python實(shí)現(xiàn)圖片變亮或者變暗的方法

    python實(shí)現(xiàn)圖片變亮或者變暗的方法

    這篇文章主要介紹了python實(shí)現(xiàn)圖片變亮或者變暗的方法,涉及Python中Image模塊操作圖片的相關(guān)技巧,需要的朋友可以參考下
    2015-06-06
  • Python面向?qū)ο蠓庋b繼承和多態(tài)示例講解

    Python面向?qū)ο蠓庋b繼承和多態(tài)示例講解

    這篇文章給大家介紹了python面向?qū)ο蟮娜筇卣鳎悍庋b,繼承,多態(tài)的相關(guān)知識(shí),通過(guò)實(shí)例代碼講解的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2021-04-04
  • Python+Mysql實(shí)現(xiàn)登錄注冊(cè)完整代碼示例

    Python+Mysql實(shí)現(xiàn)登錄注冊(cè)完整代碼示例

    在開(kāi)發(fā)中用戶注冊(cè)和登錄是常見(jiàn)的功能需求,這篇文章主要給大家介紹了關(guān)于Python+Mysql實(shí)現(xiàn)登錄注冊(cè)的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-03-03
  • scrapy爬蟲(chóng)完整實(shí)例

    scrapy爬蟲(chóng)完整實(shí)例

    這篇文章主要介紹了scrapy爬蟲(chóng)完整實(shí)例,小編覺(jué)得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-01-01
  • 基于Python實(shí)現(xiàn)自動(dòng)關(guān)機(jī)小工具

    基于Python實(shí)現(xiàn)自動(dòng)關(guān)機(jī)小工具

    上班族經(jīng)常會(huì)遇到這樣情況,著急下班結(jié)果將關(guān)機(jī)誤點(diǎn)成重啟,或者臨近下班又通知開(kāi)會(huì),開(kāi)完會(huì)已經(jīng)遲了還要去給電腦關(guān)機(jī)。今天使用PyQt5做了個(gè)自動(dòng)關(guān)機(jī)的小工具,設(shè)置好關(guān)機(jī)時(shí)間然后直接提交即可,需要的可以參考一下
    2022-10-10
  • 20個(gè)Python常用技巧分享

    20個(gè)Python常用技巧分享

    Python的可讀性和簡(jiǎn)單性是其廣受歡迎的兩大原因,本文介紹20個(gè)常用的Python技巧來(lái)提高代碼的可讀性,并能幫助你節(jié)省大量時(shí)間,下面的技巧將在你的日常編碼練習(xí)中非常實(shí)用
    2023-04-04
  • python識(shí)別驗(yàn)證碼的思路及解決方案

    python識(shí)別驗(yàn)證碼的思路及解決方案

    在本篇內(nèi)容里小編給大家整理的是一篇關(guān)于python識(shí)別驗(yàn)證碼的思路及解決方案,有需要的朋友們可以參考下。
    2020-09-09

最新評(píng)論