Python設計模式之 外觀模式 例項講解

2021-10-05 23:33:28 字數 2796 閱讀 9141

python中設計模式之外觀模式主張以分多模組進行**管理而減少耦合,下面用例項來進行說明。

應用特性:

在很多複雜而小功能需要呼叫需求時,而且這些呼叫往往還有一定相關性,即一呼叫就是一系列的。

結構特性:

把原本複雜而繁多的呼叫,規劃統一到乙個入口類中,從此只通過這乙個入口呼叫就可以了。

**結構示例:

class

moduleone

(object):

defcreate

(self)

:print

'create module one instance'

defdelete

(self)

:print

'delete module one instance'

class

moduletwo

(object):

defcreate

(self)

:print

'create module two instance'

defdelete

(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(

)

有點類似**模式,不同之處是,外觀模式不僅**了乙個子系統的各個模組的功能,同時站在子系統的角度,通過組合子系統各模組的功能,對外提供更加高層的介面,從而在語義上更加滿足子系統層面的需求。

隨著系統功能的不斷擴張,當需要將系統劃分成多個子系統或子模組,以減少耦合、降低系統**複雜度、提高可維護性時,**模式通常會有用武之地。

再來看乙個例子:

class

small_or_piece1

:def

__init__

(self)

:pass

defdo_small1

(self)

:print

'do small 1'

class

small_or_piece_2

:def

__init__

(self)

:pass

defdo_small2

(self)

:print

'do small 2'

class

small_or_piece_3

:def

__init__

(self)

:pass

defdo_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(

)##如果這裡呼叫的不只2兩函式,作用就顯示出來了,可以把原本複雜的函式呼叫關係清楚化,統一化

self.__small2.do_small2(

)def

method2

(self)

: self.__small2.do_small2(

) self.__small3.do_small3(

)if __name__ ==

'__main__'

: osd = outside(

) osd.method1(

) osd.method2(

)

結果:

do small 1 

do small 2

do small 2

do small 3

python設計模式之外觀模式

系統會隨著演化變得非常複雜,最終形成大量的 並且有時是令人迷惑的 類和互動,這種情況並不少見。許多情況下,我們並不想把這種複雜性暴露給客戶端。外觀設計模式有助於隱藏系統的內部複雜性,並通過乙個簡化的介面向客戶端暴露必要的部分。本質上,外觀 facade 是在已有複雜系統之上實現的乙個抽象層。1.現實...

設計模式之外觀模式

外觀模式提供了乙個統一的介面,用來訪問子系統中的一群介面。這樣可以避免客戶端和子系統之間的緊耦合。這種模式需要將一系列的子系統組合到外觀中,然後將具體的工作交給各個子系統去完成。如此一來,可以簡化介面的呼叫。其本質就是將系統與客戶端互動的地方封裝起來。這個模式,總體來說,很簡單,理解起來也不困難。依...

設計模式之外觀模式

外觀模式 為子系統中的一組介面提供乙個一直的介面,此模式定義了乙個高層介面,這個介面使得這一子系統更加容易使用。即通過乙個中類來完成客戶端的請求。拿機房收費系統的上機過程來說,上機需要顯示上機者的資訊,填寫上機狀態表,填寫上機記錄表。而使用者不需要知道這些功能是怎麼實現的,只需要通過介面操作就可以完...