(一)、什麼是建造者模式
我們想要建立乙個由多個部分構成的物件,而且它的構成需要一步接一步地完成。 只有當各個部分都建立好,這個物件才算是完整的。這正是建造者設計模式。
(二)、工廠模式和建造者模式的區別
(三)、應用案例
引入了乙個建造者computerbuilder、乙個指揮者hardwareengineer以及 一步接一步裝配一台電腦的過程,這樣現在就支援不同的配置了
class
computer
:# 建立乙個電腦類
def__init__
(self, serial_number)
: self.serial = serial_number
self.memory =
none
# 單位為gb
self.hdd =
none
# 單位為gb
self.gpu =
none
def__str__
(self)
: info =
('memory: {}gb'
.format
(self.memory)
,'hard disk: {}gb'
.format
(self.hdd)
,'graphics card: {}'
.format
(self.gpu)
)return
'\n'
.join(info)
class
computerbuilder
:# 電腦製造者
def__init__
(self)
: self.computer = computer(
'ag23385193'
)def
configure_memory
(self, amount)
: self.computer.memory = amount
defconfigure_hdd
(self, amount)
: self.computer.hdd = amount
defconfigure_gpu
(self, gpu_model)
: self.computer.gpu = gpu_model
class
hardwareengineer
:def
__init__
(self)
: self.builder =
none
defconstruct_computer
(self, memory, hdd, gpu)
: self.builder = computerbuilder(
) a =
[step for step in
(self.builder.configure_memory(memory)
, self.builder.configure_hdd(hdd)
, self.builder.configure_gpu(gpu))]
@property
defcomputer
(self)
:return self.builder.computer
defmain()
: engineer = hardwareengineer(
) a = engineer.construct_computer(hdd=
500, memory=
8, gpu=
'geforce gtx 650 ti'
) computer = engineer.computer
print
(computer)
print a
if __name__ ==
'__main__'
: main(
)
Python設計模式 建造者模式
需求,畫人物,要求畫乙個人的頭,左手,右手,左腳,右腳和身體,畫乙個瘦子,乙個胖子 不使用設計模式 encoding utf 8 author kevinlu1010 qq.com if name name print 畫左手 print 畫右手 print 畫左腳 print 畫右腳 print ...
Python設計模式 建造者模式
建造者模式 將一複雜的構建過程和它的表現分離出來,使同樣的建造過程可以獲取不同的表現。能夠更加精確的控制複雜物件的建立過程,讓使用者可以使用相同的建立過程建立不同的產品。from abc import abcmeta,abstractmethod class toy metaclass abcmet...
設計模式 建造者模式
在gof的23種設計模式中對builder pattern的定義是 將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。從程式角度來說,就是在基類定義某種事物建立的過程或業務流程,在子類進行重寫或是使用基類方法。這樣建立出來的例項不會因為過程或流程的丟失而使業務失敗。舉例來說,...