Groovy 设计模式 -- 组合模式

Composite Pattern

http://groovy-lang.org/design-patterns.html#_chain_of_responsibility_pattern

组合模式,允许你将多个对象作为一组对象对待。这些对象具有层次结构,并具有相同的 方法, 有叶子节点和组合节点。

组合节点,调用子节点(叶子和组合节点)的方法,实现组合节点自身的方法。

 

The Composite Pattern allows you to treat single instances of an object the same way as a group of objects. The pattern is often used with hierarchies of objects. Typically, one or more methods should be callable in the same way for either leaf or composite nodes within the hierarchy. In such a case, composite nodes typically invoke the same named method for each of their children nodes.

 

例子

Consider this usage of the composite pattern where we want to call toString() on either Leaf or Composite objects.

CompositeClasses

 

 

 

abstract class Component { def name def toString(indent) { ("-" * indent) + name } } class Composite extends Component { private children = [] def toString(indent) { def s = super.toString(indent) children.each { child -> s += "\\n" + child.toString(indent + 1) } s } def leftShift(component) { children << component } } class Leaf extends Component { } def root = new Composite(name: "root") root << new Leaf(name: "leaf A") def comp = new Composite(name: "comp B") root << comp root << new Leaf(name: "leaf C") comp << new Leaf(name: "leaf B1") comp << new Leaf(name: "leaf B2") println root.toString(0)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值