建造者模式 Builder

2021-08-30 10:06:05 字數 1304 閱讀 4817

名字: 建造者模式(builder)

意圖: [b]將乙個複雜的構建與其表示相分離[/b], 得同樣的構建過程可以建立不同的表示.

動機: 軟體系統中, 有時候面臨著「乙個複雜物件」的建立工作, 其通常由各個部分的子物件用一定的演算法構成;

由於需求的變化, 這個複雜物件的各個部分經常面臨劇烈變化, 但將其組合在一起的演算法卻相對穩定.

class director

def initialize

@process = [:create_footer, :create_body, :create_header]

enddef build(builder)

@process.each do |p|

builder.send(p)

endend

endclass housebuilder

def initialize

enddef create_footer

raise 'abstract method'

enddef create_body

raise 'abstract method'

enddef create_header

raise 'abstract method'

endend

class villagehousebuilder < housebuilder

def create_footer

puts "泥土地"

enddef create_body

puts "木石結構"

enddef create_header

puts "瓦片屋頂"

endend

class townhousebuilder < housebuilder

def create_footer

puts "水泥地"

enddef create_body

puts "磚結構"

enddef create_header

puts "水泥板屋頂"

endend

director = director.new

village_house_builder = villagehousebuilder.new

director.build(village_house_builder)

town_house_builder = townhousebuilder.new

director.build(town_house_builder)

[img]

Builder 建造者模式

模式定義 builder模式很好地將乙個複雜物件的建立與該物件內部的各個部件的組裝分離開來。它和 abstract factory模式有相似的地方,但是abstract factory主要提供了乙個建立一些列相關或相互依賴的物件的介面,無需知道指定他們具體的類 生產者 而builder模式著重於部件...

建造者模式(Builder)

工廠類模式提供的是建立單個類的模式,而建造者模式則是將各種產品集中起來進行管理,用來建立復合物件,所謂復合物件就是指某個類具有不同的屬性,其實建造者模式就是前面抽象工廠模式和最後的test結合起來得到的。我們看一下 還和前面一樣,乙個sender介面,兩個實現類mailsender和smssende...

建造者模式(Builder)

4 建造者模式 builder 工廠類模式提供的是建立單個類的模式,而建造者模式則是將各種產品集中起來進行管理,用來建立復合物件,所謂復合物件就是指某個類具有不同的屬性,其實建造者模式就是前面抽象工廠模式和最後的test結合起來得到的。我們看一下 建造者類如下 抽象產品類,使用了模板方法模式,不同產...