[Python設(shè)計(jì)模式] 08 - 外觀模式

設(shè)計(jì)模式的目的是讓代碼易維護(hù)、易擴(kuò)展,不能為了模式而模式,因此一個(gè)簡(jiǎn)單的工具腳本是不需要用到任何模式的。

外觀模式:為子系統(tǒng)中的一組接口提供一個(gè)一致的界面。此模式定義了一個(gè)高層接口,這個(gè)接口使得這一子系統(tǒng)更加容易使用。

基本思想

  • 一個(gè)子系統(tǒng)由很多功能模塊組成
  • 這些功能模塊分別對(duì)外暴露自己的訪問(wèn)接口
  • 這些功能模塊聯(lián)合起來(lái)對(duì)外提供該子系統(tǒng)的完整功能
  • 此時(shí)定義一組新的接口,將該子系統(tǒng)的所有模塊封裝起來(lái),統(tǒng)一對(duì)外提供接口
  • 這個(gè)全新的接口就是原有子系統(tǒng)的外觀

代碼結(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ì)有用武之地。

原文地址:http://www.isware.cn/python-design-pattern/08-facade/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容