`

组合模式(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) 


类图:


运行结果:


  • 大小: 11.1 KB
  • 大小: 30.9 KB
1
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics