需求,畫人物,要求畫乙個人的頭,左手,右手,左腳,右腳和身體,畫乙個瘦子,乙個胖子
不使用設計模式
#encoding=utf-8
__author__ = '
__name__=='
__name__':
'畫左手
'畫右手
'畫左腳
'畫右腳
'畫胖身體
'畫左手
'畫右手
'畫左腳
'畫右腳
'畫**體
'
這樣寫的缺點每畫乙個人,都要依次得畫他的六個部位,這些部位有一些事可以重用的,所以呼叫起來會比較繁瑣,而且客戶呼叫的時候可能會忘記畫其中的乙個部位,所以容易出錯。
使用建造者模式
#encoding=utf-8
__author__ = '
'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):
'畫左手
'def
draw_right_arm(self):
'畫右手
'def
draw_left_foot(self):
'畫左腳
'def
draw_right_foot(self):
'畫右腳
'def
draw_head(self):
print'畫頭
'def
draw_body(self):
'畫**體
'class
fat(builder):
defdraw_left_arm(self):
'畫左手
'def
draw_right_arm(self):
'畫右手
'def
draw_left_foot(self):
'畫左腳
'def
draw_right_foot(self):
'畫右腳
'def
draw_head(self):
print'畫頭
'def
draw_body(self):
'畫胖身體
'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的定義是 將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。從程式角度來說,就是在基類定義某種事物建立的過程或業務流程,在子類進行重寫或是使用基類方法。這樣建立出來的例項不會因為過程或流程的丟失而使業務失敗。舉例來說,...