Python設計模式 建造者模式

2021-09-06 18:51:47 字數 2775 閱讀 6315

需求,畫人物,要求畫乙個人的頭,左手,右手,左腳,右腳和身體,畫乙個瘦子,乙個胖子

不使用設計模式

#

encoding=utf-8

__author__ = '

[email protected]'if

__name__=='

__name__':

print

'畫左手

'print

'畫右手

'print

'畫左腳

'print

'畫右腳

'print

'畫胖身體

'print

'畫左手

'print

'畫右手

'print

'畫左腳

'print

'畫右腳

'print

'畫**體

'

這樣寫的缺點每畫乙個人,都要依次得畫他的六個部位,這些部位有一些事可以重用的,所以呼叫起來會比較繁瑣,而且客戶呼叫的時候可能會忘記畫其中的乙個部位,所以容易出錯。

使用建造者模式

#

encoding=utf-8

__author__ = '

[email protected]

'from abc import

abcmeta, abstractmethod

class

builder():

__metaclass__ =abcmeta

@abstractmethod

defdraw_left_arm(self):

pass

@abstractmethod

defdraw_right_arm(self):

pass

@abstractmethod

defdraw_left_foot(self):

pass

@abstractmethod

defdraw_right_foot(self):

pass

@abstractmethod

defdraw_head(self):

pass

@abstractmethod

defdraw_body(self):

pass

class

thin(builder):

defdraw_left_arm(self):

print

'畫左手

'def

draw_right_arm(self):

print

'畫右手

'def

draw_left_foot(self):

print

'畫左腳

'def

draw_right_foot(self):

print

'畫右腳

'def

draw_head(self):

print'畫頭

'def

draw_body(self):

print

'畫**體

'class

fat(builder):

defdraw_left_arm(self):

print

'畫左手

'def

draw_right_arm(self):

print

'畫右手

'def

draw_left_foot(self):

print

'畫左腳

'def

draw_right_foot(self):

print

'畫右腳

'def

draw_head(self):

print'畫頭

'def

draw_body(self):

print

'畫胖身體

'class

director():

def__init__

(self, person):

self.person=person

defdraw(self):

self.person.draw_left_arm()

self.person.draw_right_arm()

self.person.draw_left_foot()

self.person.draw_right_foot()

self.person.draw_head()

self.person.draw_body()

if__name__=='

__main__':

thin=thin()

fat=fat()

director_thin=director(thin)

director_thin.draw()

director_fat=director(fat)

director_fat.draw()

建造乙個抽象的類builder,定義畫六個部位的方法,每畫一種人,就新建乙個繼承builder的類,這樣新建的類就必須要實現builder的所以方法,這裡主要運用了抽象方法的特性,父類定義了幾個抽象的方法,子類必須要實現這些方法,否則就報錯,這裡解決了會漏畫乙個部位的問題。建造乙個指揮者類director,輸入乙個builder類,定義乙個draw的方法,把畫這六個部位的方法呼叫都放在裡面,這樣呼叫起來就不會繁瑣了。

所以建造者模式用於將乙個複雜的物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。

python設計模式 建造者模式

一 什麼是建造者模式我們想要建立乙個由多個部分構成的物件,而且它的構成需要一步接一步地完成。只有當各個部分都建立好,這個物件才算是完整的。這正是建造者設計模式。二 工廠模式和建造者模式的區別 三 應用案例引入了乙個建造者computerbuilder 乙個指揮者hardwareengineer以及 ...

Python設計模式 建造者模式

建造者模式 將一複雜的構建過程和它的表現分離出來,使同樣的建造過程可以獲取不同的表現。能夠更加精確的控制複雜物件的建立過程,讓使用者可以使用相同的建立過程建立不同的產品。from abc import abcmeta,abstractmethod class toy metaclass abcmet...

設計模式 建造者模式

在gof的23種設計模式中對builder pattern的定義是 將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。從程式角度來說,就是在基類定義某種事物建立的過程或業務流程,在子類進行重寫或是使用基類方法。這樣建立出來的例項不會因為過程或流程的丟失而使業務失敗。舉例來說,...