最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

舉例分析Python中設(shè)計(jì)模式之外觀模式的運(yùn)用

 更新時(shí)間:2016年03月02日 14:39:21   作者:像風(fēng)一樣的自由  
這篇文章主要介紹了Python中設(shè)計(jì)模式之外觀模式的運(yùn)用,外觀模式主張以分多模塊進(jìn)行代碼管理而減少耦合,需要的朋友可以參考下

應(yīng)用特性:
在很多復(fù)雜而小功能需要調(diào)用需求時(shí),而且這些調(diào)用往往還有一定相關(guān)性,即一調(diào)用就是一系列的。
結(jié)構(gòu)特性:
把原本復(fù)雜而繁多的調(diào)用,規(guī)劃統(tǒng)一到一個(gè)入口類中,從此只通過(guò)這一個(gè)入口調(diào)用就可以了。

代碼結(jié)構(gòu)示例:

class ModuleOne(object):
  def Create(self):
    print 'create module one instance'

  def Delete(self):
    print 'delete module one instance'

class ModuleTwo(object):
  def Create(self):
    print 'create module two instance'

  def Delete(self):
    print 'delete module two instance'

class Facade(object):
  def __init__(self):
    self.module_one = ModuleOne()
    self.module_two = ModuleTwo()

  def create_module_one(self):
    self.module_one.Create()

  def create_module_two(self):
    self.module_two.Create()

  def create_both(self):
    self.module_one.Create()
    self.module_two.Create()

  def delete_module_one(self):
    self.module_one.Delete()

  def delete_module_two(self):
    self.module_two.Delete()

  def delete_both(self):
    self.module_one.Delete()
    self.module_two.Delete()

有點(diǎn)類似代理模式,不同之處是,外觀模式不僅代理了一個(gè)子系統(tǒng)的各個(gè)模塊的功能,同時(shí)站在子系統(tǒng)的角度,通過(guò)組合子系統(tǒng)各模塊的功能,對(duì)外提供更加高層的接口,從而在語(yǔ)義上更加滿足子系統(tǒng)層面的需求。

隨著系統(tǒng)功能的不斷擴(kuò)張,當(dāng)需要將系統(tǒng)劃分成多個(gè)子系統(tǒng)或子模塊,以減少耦合、降低系統(tǒng)代碼復(fù)雜度、提高可維護(hù)性時(shí),代理模式通常會(huì)有用武之地。

再來(lái)看一個(gè)例子:

class small_or_piece1: 
  def __init__(self): 
    pass 
   
  def do_small1(self): 
    print 'do small 1' 
   
class small_or_piece_2: 
  def __init__(self): 
    pass 
   
  def do_small2(self): 
    print 'do small 2' 
   
class small_or_piece_3: 
  def __init__(self): 
    pass 
   
  def do_small3(self): 
    print 'do small 3' 
 
class outside: 
  def __init__(self): 
    self.__small1 = small_or_piece1() 
    self.__small2 = small_or_piece_2() 
    self.__small3 = small_or_piece_3() 
   
  def method1(self): 
    self.__small1.do_small1()  ##如果這里調(diào)用的不只2兩函數(shù),作用就顯示出來(lái)了,可以把原本復(fù)雜的函數(shù)調(diào)用關(guān)系清楚化,統(tǒng)一化 
    self.__small2.do_small2() 
     
  def method2(self): 
    self.__small2.do_small2() 
    self.__small3.do_small3() 
 
if __name__ == '__main__': 
  osd = outside() 
  osd.method1() 
  osd.method2() 

結(jié)果:

do small 1 
do small 2 
do small 2 
do small 3 

相關(guān)文章

  • java觀察者模式的三種實(shí)現(xiàn)方式代碼實(shí)例

    java觀察者模式的三種實(shí)現(xiàn)方式代碼實(shí)例

    這篇文章主要介紹了java觀察者模式的三種實(shí)現(xiàn)方式代碼實(shí)例,觀察者模式(又被稱為發(fā)布-訂閱(Publish/Subscribe)模式,屬于行為型模式的一種,它定義了一種一對(duì)多的依賴關(guān)系,讓多個(gè)觀察者對(duì)象同時(shí)監(jiān)聽(tīng)某一個(gè)主題對(duì)象,需要的朋友可以參考下
    2023-10-10
  • springBoot接入阿里云oss的實(shí)現(xiàn)步驟

    springBoot接入阿里云oss的實(shí)現(xiàn)步驟

    這篇文章主要介紹了springBoot接入阿里云oss的實(shí)現(xiàn)步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • SpringBoot+Redis+Lua分布式限流的實(shí)現(xiàn)

    SpringBoot+Redis+Lua分布式限流的實(shí)現(xiàn)

    本文主要介紹了SpringBoot+Redis+Lua分布式限流的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • Struts中使用validate()輸入校驗(yàn)方法詳解

    Struts中使用validate()輸入校驗(yàn)方法詳解

    這篇文章主要介紹了Struts中使用validate()輸入校驗(yàn)方法,本文介紹的非常詳細(xì),具有參考借鑒價(jià)值,感興趣的朋友一起看看吧
    2016-09-09
  • IDEA多線程文件下載插件開(kāi)發(fā)的步驟詳解

    IDEA多線程文件下載插件開(kāi)發(fā)的步驟詳解

    這篇文章主要介紹了IDEA多線程文件下載插件開(kāi)發(fā)的步驟詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • 在java中使用dom4j解析xml(示例代碼)

    在java中使用dom4j解析xml(示例代碼)

    鑒于目前的趨勢(shì),我們這里來(lái)講講Dom4j的基本用法,不涉及遞歸等復(fù)雜操作。Dom4j的用法很多,官網(wǎng)上的示例有那么點(diǎn)兒晦澀,這里就不寫(xiě)了
    2013-10-10
  • Java哈希表和有序表實(shí)例代碼講解

    Java哈希表和有序表實(shí)例代碼講解

    這篇文章主要介紹了Java哈希表和有序表,哈希表也稱散列表,是一種以鍵值對(duì)形式存儲(chǔ)記錄的數(shù)據(jù)結(jié)構(gòu),該數(shù)據(jù)結(jié)構(gòu)支持根據(jù)鍵的內(nèi)容直接訪問(wèn)在內(nèi)存特定位置的值,并且可以進(jìn)行查找、添加和刪除操作
    2023-04-04
  • Java web三件套listener、filter、servelt原理解析

    Java web三件套listener、filter、servelt原理解析

    這篇文章主要介紹了Java web三件套listener、filter、servelt原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • Java數(shù)據(jù)類型實(shí)現(xiàn)自動(dòng)與強(qiáng)制轉(zhuǎn)換的示例代碼

    Java數(shù)據(jù)類型實(shí)現(xiàn)自動(dòng)與強(qiáng)制轉(zhuǎn)換的示例代碼

    Java數(shù)據(jù)類型之間的轉(zhuǎn)換有自動(dòng)轉(zhuǎn)換和強(qiáng)制類型轉(zhuǎn)換,這篇文章主要給大家介紹Java數(shù)據(jù)類型如何實(shí)現(xiàn)自動(dòng)轉(zhuǎn)換與強(qiáng)制轉(zhuǎn)換,需要的朋友可以參考下
    2023-05-05
  • SpringBoot+@EnableScheduling使用定時(shí)器的常見(jiàn)案例

    SpringBoot+@EnableScheduling使用定時(shí)器的常見(jiàn)案例

    項(xiàng)目開(kāi)發(fā)中經(jīng)常需要執(zhí)行一些定時(shí)任務(wù),本文主要介紹了SpringBoot+@EnableScheduling使用定時(shí)器的常見(jiàn)案例,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-09-09

最新評(píng)論

怀仁县| 繁昌县| 许昌县| 桐柏县| 濮阳市| 芦山县| 樟树市| 乌鲁木齐市| 兴和县| 峨边| 宜良县| 华容县| 桦川县| 突泉县| 德庆县| 白朗县| 荆门市| 江孜县| 盐亭县| 墨玉县| 滨海县| 南昌市| 景德镇市| 上思县| 丰台区| 米易县| 北海市| 台山市| 天祝| 武陟县| 贵港市| 增城市| 富宁县| 盐边县| 重庆市| 乐安县| 闽侯县| 沙湾县| 永顺县| 烟台市| 青川县|