Python設(shè)計(jì)模式之橋接模式原理與用法實(shí)例分析
本文實(shí)例講述了Python設(shè)計(jì)模式之橋接模式原理與用法。分享給大家供大家參考,具體如下:
橋接模式(Bridge Pattern):將抽象部分與它的實(shí)現(xiàn)部分分離,使它們都可以獨(dú)立地變化.
下面是一個(gè)橋接模式的demo:
#!/usr/bin/env python # -*- coding:utf-8 -*- __author__ = 'Andy' """ 大話(huà)設(shè)計(jì)模式 設(shè)計(jì)模式——橋接模式 橋接模式(Bridge Pattern):將抽象部分與它的實(shí)現(xiàn)部分分離,使它們都可以獨(dú)立地變化. 程序?qū)嵗?手機(jī)軟件的分類(lèi) 和 手機(jī)品牌的分類(lèi) 耦合度低 兩種分類(lèi)中間用一個(gè)set_handsetsoft橋接,各自的變化,不影響其他分類(lèi) """ # 抽象手機(jī)軟件類(lèi) class HandsetSoft(object): def run(self): pass #具體游戲類(lèi),游戲是手機(jī)軟件,繼承抽象手機(jī)軟件類(lèi) class HandsetGame(HandsetSoft): def run(self): print "運(yùn)行手機(jī)游戲" #手機(jī)通訊錄 class HandsetAddressList(HandsetSoft): def run(self): print "運(yùn)行通信錄" #抽象手機(jī)品牌類(lèi) class HandsetBrand(object): def __init__(self): self.soft = "" def set_handsetsoft(self,soft): self.soft = soft def run(self): pass # 手機(jī)品牌N class HandsetBrandN(HandsetBrand): def run(self): self.soft.run() # 手機(jī)品牌M class HandsetBrandM(HandsetBrand): def run(self): self.soft.run() if __name__ == "__main__": game = HandsetGame() address = HandsetAddressList() phoneN = HandsetBrandN() phoneN.set_handsetsoft(game) phoneN.run() phoneM = HandsetBrandM() phoneM.set_handsetsoft(address) phoneM.run()
運(yùn)行結(jié)果:
上面類(lèi)的設(shè)計(jì)如下圖
橋接模式的核心意圖就是把類(lèi)的實(shí)現(xiàn)獨(dú)立出來(lái),讓他們各自變化。這樣使每種實(shí)現(xiàn)的變化不會(huì)影響其他實(shí)現(xiàn),從而達(dá)到應(yīng)對(duì)變化的目的
更多關(guān)于Python相關(guān)內(nèi)容可查看本站專(zhuān)題:《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python Socket編程技巧總結(jié)》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》及《Python入門(mén)與進(jìn)階經(jīng)典教程》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
django項(xiàng)目中使用手機(jī)號(hào)登錄的實(shí)例代碼
這篇文章主要介紹了django項(xiàng)目中使用手機(jī)號(hào)登錄的實(shí)例代碼,非常不錯(cuò),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下2019-08-08對(duì)python GUI實(shí)現(xiàn)完美進(jìn)度條的示例詳解
今天小編就為大家分享一篇對(duì)python GUI實(shí)現(xiàn)完美進(jìn)度條的示例詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-12-12Python中常用的統(tǒng)計(jì)檢驗(yàn)代碼分享
統(tǒng)計(jì)檢驗(yàn)是數(shù)據(jù)分析中的重要工具,用于檢驗(yàn)數(shù)據(jù)集中的差異、關(guān)聯(lián)和分布等統(tǒng)計(jì)性質(zhì),本文為大家整理了常見(jiàn)的統(tǒng)計(jì)檢驗(yàn)方法,希望對(duì)大家有所幫助2024-01-01對(duì)python中的for循環(huán)和range內(nèi)置函數(shù)詳解
下面小編就為大家分享一篇對(duì)python中的for循環(huán)和range內(nèi)置函數(shù)詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-04-04Python中ImportError錯(cuò)誤的詳細(xì)解決方法
最近辛辛苦苦安裝完了python,最后再運(yùn)行的時(shí)候會(huì)出現(xiàn)錯(cuò)誤,所以這篇文章主要給大家介紹了關(guān)于Python中ImportError錯(cuò)誤的詳細(xì)解決方法,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-07-07python實(shí)現(xiàn)實(shí)時(shí)視頻流播放代碼實(shí)例
這篇文章主要介紹了python實(shí)現(xiàn)實(shí)時(shí)視頻流播放代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-01-01Pytorch DataLoader shuffle驗(yàn)證方式
這篇文章主要介紹了Pytorch DataLoader shuffle驗(yàn)證方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06