组合模式(Composite)

名字:  组合模式(Composite)
别名:  部分-整体模式合成模式
意图:  将对象组合成树形结构以表示" 部分-整体"的层次结构.Composite模式使得用户对 单个对象和组合对象的使用具有一致性.

class Tag
  attr_accessor :name
  
  def initialize(name)
    @name = name
  end

  def name
    @name
  end

  def display(depth)
    puts " " * depth + @name
  end
end

class Component
  attr_accessor :name, :items

  def initialize(name)
    @name = name
    @items = []
  end

  def add(item)
    @items << item
  end

  def remove(item)
    @items.delete(item)
  end

  def name
    ["[", @name, "]"].join
  end

  def display(depth)
    puts " " * depth + name

    @items.each do |item|
      item.display(depth + 2)
    end
  end
end

html = Component.new('html')

item_type_select =Tag.new('ItemTypeSelect') 
html.add(item_type_select)
html.remove(item_type_select)

date_select = Component.new('DateSelectTag')
date_select.add(Tag.new('YearSelectTag'))
date_select.add(Tag.new('MonthSelectTag'))
date_select.add(Tag.new('DayTag'))

html.add(date_select)
html.add(Tag.new('NameInputTag'))
html.display(1) 


类图:
组合模式(Composite)

运行结果:
组合模式(Composite)

你可能感兴趣的:(html,Ruby)