建造者模式(Builder)

名字: 建造者模式(Builder)
意图: [b]将一个复杂的构建与其表示相分离[/b], 得同样的构建过程可以创建不同的表示.
动机: 软件系统中, 有时候面临着“一个复杂对象”的创建工作, 其通常由各个部分的子对象用一定的算法构成;
由于需求的变化, 这个复杂对象的各个部分经常面临剧烈变化, 但将其组合在一起的算法却相对稳定.


class Director
def initialize
@process = [:create_footer, :create_body, :create_header]
end

def build(builder)
@process.each do |p|
builder.send(p)
end
end
end

class HouseBuilder
def initialize
end

def create_footer
raise 'Abstract method'
end

def create_body
raise 'Abstract method'
end

def create_header
raise 'Abstract method'
end
end

class VillageHouseBuilder < HouseBuilder
def create_footer
puts "泥土地"
end

def create_body
puts "木石结构"
end

def create_header
puts "瓦片屋顶"
end
end

class TownHouseBuilder < HouseBuilder
def create_footer
puts "水泥地"
end

def create_body
puts "砖结构"
end

def create_header
puts "水泥板屋顶"
end
end

director = Director.new
village_house_builder = VillageHouseBuilder.new
director.build(village_house_builder)

town_house_builder = TownHouseBuilder.new
director.build(town_house_builder)



[img]http://dl.iteye.com/upload/attachment/192361/2159c9cb-795a-3efe-8d3a-a8a75bc6518c.jpg[/img]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值