`

建造者模式(Builder)

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

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)




  • 大小: 46.9 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics