本文的概念性内容来自深入浅出设计模式一书.
本文需结合上一篇文章(使用C# (.NET Core) 实现迭代器设计模式)一起看.
上一篇文章我们研究了多个菜单一起使用的问题....如果我们拥有一个树形结构的菜单, 子菜单, 或者子菜单和菜单项一起, 那么就可以说任何一个菜单都是一个组合, 因为它可以包含其它菜单或菜单项.
而单独的对象就是菜单项, 它们不包含其它对象.
?
?...使用组合模式来设计菜单
首先, 需要创建一个component接口, 它作为菜单和菜单项的共同接口, 这样就可以在菜单或菜单项上调用同样的方法了.
?...(我采用的是这个)
这对MenuItem, 就没有必要实现这个创建迭代器(遍历器)方法了....我们也可以不这样做, 我们可以先判断它的类型是否为MenuItem, 但这个过程就让我们失去了透明性, 也就是说 我们无法一致的对待Menu和MenuItem了.