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.現實...
設計模式之外觀模式
外觀模式提供了乙個統一的介面,用來訪問子系統中的一群介面。這樣可以避免客戶端和子系統之間的緊耦合。這種模式需要將一系列的子系統組合到外觀中,然後將具體的工作交給各個子系統去完成。如此一來,可以簡化介面的呼叫。其本質就是將系統與客戶端互動的地方封裝起來。這個模式,總體來說,很簡單,理解起來也不困難。依...
設計模式之外觀模式
外觀模式 為子系統中的一組介面提供乙個一直的介面,此模式定義了乙個高層介面,這個介面使得這一子系統更加容易使用。即通過乙個中類來完成客戶端的請求。拿機房收費系統的上機過程來說,上機需要顯示上機者的資訊,填寫上機狀態表,填寫上機記錄表。而使用者不需要知道這些功能是怎麼實現的,只需要通過介面操作就可以完...