結構模式 將抽象與其實現分離

2021-09-29 07:04:29 字數 1290 閱讀 4783

# coding=utf-8

# 實現的繪圖api 1

class

drawingapi1

(object):

defdraw_circle

(self, x, y, radius)

:print

('api1.圓的比例 {}:{} 半徑 {}'

.format

(x, y, radius)

)# 實現的繪圖api 2

class

drawingapi2

(object):

defdraw_circle

(self, x, y, radius)

:print

('api2.圓的比例 {}:{} 半徑 {}'

.format

(x, y, radius)

)# 抽象的圓形狀

class

circleshape

(object):

def__init__

(self, x, y, radius, drawing_api)

: self._x = x

self._y = y

self._radius = radius

self._drawing_api = drawing_api

# 低層,即具體實施

defdraw

(self)

: self._drawing_api.draw_circle(self._x, self._y, self._radius)

# 半徑的範圍

defscale

(self, pct)

: self._radius *= pct

defmain()

: shapes =

(circleshape(1,

2,3, drawingapi1())

, circleshape(5,

7,11, drawingapi2())

)for shape in shapes:

shape.scale(

2.5)

shape.draw(

)if __name__ ==

'__main__'

: main(

)

輸出:

api1.圓的比例 1

:2 半徑 7.5

api2.圓的比例 5

:7 半徑 27.5

結構模式 組合模式

組合模式 composite pattern 組合多個物件形成樹形結構以表示具有 整體 部分 關係的層次結構。組合模式對單個物件 即葉子物件 和組合物件 即容 器物件 的使用具有一致性,組合模式又可以稱為 整體 部分 part whole 模式,它是一種物件結構型模式。將物件組合成樹形結構以表示部分...

Facade 結構模式

為子系統中的一組介面提供乙個一致的介面,facade 模式定義了乙個高層介面,這個介面使得這一子系統更加容易使用。1 設計初期階段,應該有意識的將不同層分離,層與層之間建立外觀模式。2 開發階段,子系統越來越複雜,增加外觀模式提供乙個簡單的呼叫介面。3 維護乙個大型遺留系統的時候,可能這個系統已經非...

結構模式 立面

facade模式通過將複雜子系統封裝在單個介面物件中來促進子系統與其可能的許多客戶端的分離。這減少了子系統之間的通訊和依賴性,並降低了系統的複雜性。立面圖案屬於結構模式。根據 gamma等人的design patterns,這種模式的目的是 為子系統中的一組介面提供統一介面。facade定義了乙個更...