建造者模式(builder pattern):將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示
下面是乙個建造者模式的demo
#!/usr/bin/env python
# -*- coding:utf-8 -*-
__author__ = 'andy'
"""大話設計模式
設計模式——建造者模式
建造者模式(builder):將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以常見不同的表示
特性: 指揮者(director) 指揮 建造者(builder) 建造 product
"""import abc
class builder(object):
__metaclass__ = abc.abcmeta
@abc.abstractmethod
def create_header(self):
pass
@abc.abstractmethod
def create_body(self):
pass
@abc.abstractmethod
def create_hand(self):
pass
@abc.abstractmethod
def create_foot(self):
pass
class thin(builder):
def create_header(self):
程式設計客棧 print '瘦子的頭'
def create_body(self):
print '瘦子的身體'
def create_hand(self):
print '瘦子的手'
def create_foot(self):
print '瘦子的腳'
class fat(builder):
def create_header(self):
print '胖子的頭'
def create_body(self):
print '胖子的身體'
def create_hand(self):
print '胖程式設計客棧子的手'
def create_foot(self):
print '胖子的腳'
class director(object):
def __init__(self, person):
self.person = person
def create_preson(self):
self.person.create_header()
self.person.create_body()
self.person.create_hand()
self.person.create_foot()
if __name__=="__main__":
thin = thin()
fat = fat()
director_thin = director(thin)
director_fat = director(fat)
director_thin.create_preson()
director_fat.create_preson()
執行結果:
瘦子的頭
瘦子的身體
瘦子的手
瘦子的腳
胖子的頭
胖子的身體
胖子的手
胖子的腳
上面類的設計如下圖:
指揮者director 呼叫建造者builder的物件 具體的建造過程是在builder的子類中實現的
四 JavaScript設計模式之建造者模式
一 建造者模式模式概念 建造者模式可以將乙個複雜的物件的構建與其表示相分離,使得同樣的構建過程可以建立不同的表示。也就是說如果我們用了建造者模式,那麼使用者就需要指定需要建造的型別就可以得到它們,而具體建造的過程和細節就不需要知道了。建造者模式實際就是乙個指揮者,乙個建造者,乙個使用指揮者呼叫具體建...
三 Python 設計模式之建造者
原教程 大話設計模式 設計模式 建造者模式 建造者模式 builder 將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以常見不同的表示 特性 指揮者 director 指揮 建造者 builder 建造 product 建造者模式 builder pattern 將乙個複雜物件的構建與它的...
設計模式之建造者
這兩天事太多了,沒來的及更新。今天早點更新。今天扯建造者模式。大家都知道乙個物件的生成是有過程的。表面上我們看的是new,其實編譯器是有一定細節指令 的。比如我們建房子,需要挖地基,砌牆,上頂等。這些操作步驟不需要我們動手,交給泥瓦工就行了。我們提供的只是,這個宅基地地方,材料等而已。2.引用型別在...