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

Python筆記之facade模式

 更新時(shí)間:2019年11月20日 09:11:11   作者:谷雨yun  
這篇文章主要為大家詳細(xì)介紹了Python筆記之facade模式,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

facade模式,即門(mén)面模式,也稱(chēng)外觀模式,這個(gè)模式的核心思想是使用facade對(duì)象為外部客戶(hù)端提供一個(gè)統(tǒng)一的訪問(wèn)一組子系統(tǒng)的接口,即客戶(hù)端不會(huì)直接與各個(gè)子系統(tǒng)交互,而是通過(guò)facade對(duì)象與各個(gè)子系統(tǒng)進(jìn)行通信并使用子系統(tǒng)的相應(yīng)功能。

可以通過(guò)下面這個(gè)圖來(lái)理解facade模式:

子系統(tǒng):各個(gè)子系統(tǒng)原則上都是獨(dú)立存在的,互不干涉的,重要的是它們都不會(huì)去關(guān)注facade對(duì)象,更不會(huì)去引用facade對(duì)象。

facade:facade對(duì)象負(fù)責(zé)將各個(gè)子系統(tǒng)組合成在一起,并為外部提供一個(gè)“舒適的外觀”和訪問(wèn)接口。

客戶(hù)端:客戶(hù)端通過(guò)facade對(duì)象去和各個(gè)子系統(tǒng)進(jìn)行交互,不會(huì)直接去和各個(gè)子系統(tǒng)打交道。

簡(jiǎn)單示例:

class Shampoo:
 """子系統(tǒng):賣(mài)各種洗發(fā)露"""
 def __init__(self):
  print('We sell all kinds of shampoo!')

 def piaorou_500ml(self, number):
  print('This is 500ml piaorou shampoo! Total: %d' % number)


class WashingPowder:
 """子系統(tǒng):賣(mài)各種洗衣粉"""
 def __init__(self):
  print('We sell all kinds of washing powder!')

 def libai_3kg(self, number):
  print('This is 3kg libai washing powder! Total: %d' % number)


class Tissue:
 """子系統(tǒng):賣(mài)各種抽紙"""
 def __init__(self):
  print('We sell all kinds of tissue!')

 def jierou_200sheets(self, number):
  print('This is 200 sheets tissue! Total: %d' % number)


class Salesman:
 """facade:售貨員"""
 def __init__(self):
  self.shampoo = Shampoo()
  self.washing_powder = WashingPowder()
  self.tissue = Tissue()
  print('What can I help you?')

 def sale_for_family(self):
  """家庭套餐"""
  self.shampoo.piaorou_500ml(1)
  self.washing_powder.libai_3kg(2)
  self.tissue.jierou_200sheets(6)


class UncleLi:
 """客戶(hù)端:李大爺"""
 def __init__(self):
  print('I want bug something!')

 def buy_for_family(self):
  """直接從售貨員那里購(gòu)買(mǎi)家庭套餐"""
  sale_man = Salesman()
  sale_man.sale_for_family()

其他與facade模式思想相近的編程原則也可以參考下,但需要注意的是“原則”本身需要根據(jù)具體情況來(lái)靈活應(yīng)用,而不是一定要這么做:

最少知識(shí)原則:最少知識(shí)意味著需要盡量減少對(duì)象之間的交互,但是也需要注意以下幾點(diǎn):

  • 在設(shè)計(jì)系統(tǒng)時(shí),在創(chuàng)建每個(gè)對(duì)象時(shí),都需要多考查下會(huì)與之交互的類(lèi)的數(shù)量以及交互的方式。
  • 避免多個(gè)對(duì)象彼此緊密耦合的情況。

迪米特法則:它是一個(gè)設(shè)計(jì)準(zhǔn)則,包含以下幾點(diǎn):

  • 每個(gè)單元對(duì)系統(tǒng)中其他單元知道得越少越好。
  • 每個(gè)單元只與其朋友交流。
  • 單元不應(yīng)該知道它操作的對(duì)象的內(nèi)部細(xì)節(jié)。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python生成器(Generator)詳解

    Python生成器(Generator)詳解

    這篇文章主要介紹了Python生成器(Generator)詳解,本文講解了什么是生成器、簡(jiǎn)單生成器、帶yield 語(yǔ)句的生成器、加強(qiáng)的生成器等內(nèi)容,需要的朋友可以參考下
    2015-04-04
  • matplotlib實(shí)現(xiàn)區(qū)域顏色填充

    matplotlib實(shí)現(xiàn)區(qū)域顏色填充

    這篇文章主要為大家詳細(xì)介紹了matplotlib實(shí)現(xiàn)區(qū)域顏色填充,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-03-03
  • Python Django獲取URL中的數(shù)據(jù)詳解

    Python Django獲取URL中的數(shù)據(jù)詳解

    這篇文章主要介紹了Python Django獲取URL中的數(shù)據(jù)詳解,小編覺(jué)得挺不錯(cuò)的,這里分享給大家,供需要的朋友參考
    2021-11-11
  • Python中的np.vstack()和np.hstack()詳解

    Python中的np.vstack()和np.hstack()詳解

    這篇文章主要介紹了np.vstack()和np.hstack(),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-04-04
  • 一篇文章帶你搞定Ubuntu中打開(kāi)Pycharm總是卡頓崩潰

    一篇文章帶你搞定Ubuntu中打開(kāi)Pycharm總是卡頓崩潰

    這篇文章主要介紹了一篇文章帶你搞定Ubuntu中打開(kāi)Pycharm總是卡頓崩潰,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • openCV-Python筆記之解讀圖像的讀取、顯示和保存問(wèn)題

    openCV-Python筆記之解讀圖像的讀取、顯示和保存問(wèn)題

    這篇文章主要介紹了openCV-Python筆記之解讀圖像的讀取、顯示和保存問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • 使用Python實(shí)現(xiàn)提取PDF文件中指定頁(yè)面的內(nèi)容

    使用Python實(shí)現(xiàn)提取PDF文件中指定頁(yè)面的內(nèi)容

    在日常工作和學(xué)習(xí)中,我們經(jīng)常需要從PDF文件中提取特定頁(yè)面的內(nèi)容,本文主要為大家詳細(xì)介紹了如何使用Python編程語(yǔ)言和兩個(gè)強(qiáng)大的庫(kù)——pymupdf和wxPython來(lái)實(shí)現(xiàn)這個(gè)任務(wù),需要的可以了解下
    2023-12-12
  • 詳解python如何調(diào)用C/C++底層庫(kù)與互相傳值

    詳解python如何調(diào)用C/C++底層庫(kù)與互相傳值

    Python作為一門(mén)腳本解釋語(yǔ)言,本身又很好的結(jié)合C++,所以使用Python開(kāi)發(fā),在性能要求的地方調(diào)用C/C++底層庫(kù),這簡(jiǎn)直是神器。本文詳細(xì)介紹了Python調(diào)用C/C++底層庫(kù),互相傳值問(wèn)題,下面一起來(lái)看看。
    2016-08-08
  • python環(huán)境中的概念conda中與環(huán)境相關(guān)指令操作

    python環(huán)境中的概念conda中與環(huán)境相關(guān)指令操作

    這篇文章主要介紹了python環(huán)境中的概念conda中與環(huán)境相關(guān)指令操作,虛擬環(huán)境是從電腦獨(dú)立開(kāi)辟出來(lái)的環(huán)境,文章介紹了相關(guān)概念,需要的朋友可以參考下
    2023-03-03
  • python中的lambda函數(shù)用法指南

    python中的lambda函數(shù)用法指南

    Lambda函數(shù)是Python中的匿名函數(shù),下面這篇文章主要給大家介紹了關(guān)于python中l(wèi)ambda函數(shù)用法的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-01-01

最新評(píng)論