python設(shè)計(jì)模式大全
本文實(shí)例講述了python常見(jiàn)的設(shè)計(jì)模式。分享給大家供大家參考,具體如下:
# #!/usr/bin/env python # # -*- coding:utf-8 # # class HttpBase: # def get(self): # psss # class Http1(HttpBase): # def get(self): # print 'http1' # class Http2(HttpBase): # def get(self): # print 'http2' # # # class Base: # def __init__(self): # self.httpobj = None # def http(self): # self.httpobj.get() # def compute(self): # self.http() # self.show() # #虛函數(shù) # def show(self): # pass # def notify(self, k): # print 'notify', k # # # #橋接模式,通過(guò)A,B 關(guān)聯(lián)不同的http1和http2 # class BaseA(Base): # def __init__(self): # self.httpobj = Http1() # def notify(self, k): # print 'A notify', k # def show(self): # print 'show a' # # class BaseB(Base): # def __init__(self): # self.httpobj = Http2() # def notify(self, k): # print 'B notify', k # def show(self): # print 'show b' # # #觀測(cè)者模式 # class Observer: # def __init__(self): # self.listOB = [] # def register(self, obj): # self.listOB.append(obj) # def notify(self): # for obj in self.listOB: # obj.notify(len(self.listOB)) # # #適配器模式 # class B1: # def http(self): # BaseB().http() # #工廠模式 # class Factory: # def CreateA(self): # return BaseA() # def CreateB(self): # return BaseB() # # # #單例模式 # class Logger(object): # log = None # @staticmethod # def new(): # # import threading # #線(xiàn)程安全 # mylock = threading.RLock() # mylock.acquire() # if not Logger.log: # Logger.log = Logger() # mylock.release() # # return Logger.log # def write(self, v): # print 'Logger ', v # # if __name__ == "__main__": # a = Factory().CreateA() # b = Factory().CreateB() # # objS = Observer() # objS.register(a) # objS.register(b) # # a.compute() # b.compute() # objS.notify() # # b1 = B1() # b1.http() # # Logger.new().log.write('v')
更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《Python圖片操作技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python Socket編程技巧總結(jié)》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門(mén)與進(jìn)階經(jīng)典教程》及《Python文件與目錄操作技巧匯總》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
python使用Pyinstaller如何打包整個(gè)項(xiàng)目
這篇文章主要介紹了python使用Pyinstaller如何打包整個(gè)項(xiàng)目,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11python?matplotlib繪畫(huà)十一種常見(jiàn)數(shù)據(jù)分析圖
這篇文章主要介紹了python?matplotlib繪畫(huà)十一種常見(jiàn)數(shù)據(jù)分析圖,文章主要繪制折線(xiàn)圖、散點(diǎn)圖、直方圖、餅圖等需要的小伙伴可以參考一下文章具體內(nèi)容2022-06-06Python面向?qū)ο蟪绦蛟O(shè)計(jì)之靜態(tài)方法、類(lèi)方法、屬性方法原理與用法分析
這篇文章主要介紹了Python面向?qū)ο蟪绦蛟O(shè)計(jì)之靜態(tài)方法、類(lèi)方法、屬性方法,結(jié)合實(shí)例形式分析了Python靜態(tài)方法、類(lèi)方法、屬性方法相關(guān)概念、原理、用法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2020-03-03pycharm終端無(wú)法運(yùn)行的問(wèn)題以及解決
這篇文章主要介紹了pycharm終端無(wú)法運(yùn)行的問(wèn)題以及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06Python實(shí)現(xiàn)的金山快盤(pán)的簽到程序
正在學(xué)習(xí)python而且自己一直在用金山快盤(pán),所以就寫(xiě)來(lái)個(gè)簽到的功能,每天定時(shí)跑2013-01-01Python爬蟲(chóng)自動(dòng)化爬取b站實(shí)時(shí)彈幕實(shí)例方法
在本篇文章里小編給大家整理的是一篇關(guān)于Python爬蟲(chóng)自動(dòng)化爬取b站實(shí)時(shí)彈幕實(shí)例方法,有興趣的朋友們可以學(xué)習(xí)下。2021-01-01Python爬蟲(chóng)請(qǐng)求模塊Urllib及Requests庫(kù)安裝使用教程
requests和urllib都是Python中常用的HTTP請(qǐng)求庫(kù),使用時(shí)需要根據(jù)實(shí)際情況選擇,如果要求使用簡(jiǎn)單、功能完善、性能高的HTTP請(qǐng)求庫(kù),可以選擇requests,如果需要兼容性更好、功能更加靈活的HTTP請(qǐng)求庫(kù),可以選擇urllib2023-11-11小議Python中自定義函數(shù)的可變參數(shù)的使用及注意點(diǎn)
Python函數(shù)的默認(rèn)值參數(shù)只會(huì)在函數(shù)定義處被解析一次,以后再使用時(shí)這個(gè)默認(rèn)值還是一樣,這在與可變參數(shù)共同使用時(shí)便會(huì)產(chǎn)生困惑,下面就來(lái)小議Python中自定義函數(shù)的可變參數(shù)的使用及注意點(diǎn)2016-06-06