组合模式

  • Component 抽象构件角色(叶子和树枝都可以表示)

    • doSomething方法:叶子和树枝共有的逻辑
  • Leaf 叶子构件

    • doSomething方法:可以选择自定义的业务逻辑,覆盖父类方法。
  • Composite 树枝构件

    • List<Component> 因为树枝会带其他的子树枝和叶子,所以需要个集合属性,
    • add,remove,get 增删改查方法
Composite root = new Composite(); // 根节点也是个树枝
branch = new Composite();
leaf = new Leaf();
root.add(branch);
branch.add(leaf);

变种

透明模式

将add、remove、get 都移到父类 Component中,这样树枝没有自己独有的方法和叶子一样,统一透明了,调用时候不需要类型转换。叶子节点调用增删改查就报错。

支持向上遍历

在父类Component里增加parent属性

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1 场景问题# 1.1 商品类别树## 考虑这样一个实际的应用:管理商品类别树。 在实现跟商品有关的应用系统的时候...
    七寸知架构阅读 6,090评论 10 59
  • 定义 属于对象的结构模式,有时又叫做“部分——整体”模式。组合模式将对象组织到树结构中,可以用来描述整体和部分的关...
    步积阅读 3,370评论 2 7
  • 组合多个对象形成树形结构以表示具有“整体—部分”关系的层次结构。组合模式对单个对象(即叶子对象)和组合对象(即容器...
    lyu571阅读 507评论 0 1
  • 组合模式将对象组合成树形结构以表示"部分-整体"的层次结构。组合模式是的用户对单个对象和组合对象的使用具有一致性。...
    Mitchell阅读 402评论 0 0
  • 组合模式Composite 背景 我们可以使用简单的对象组合成复杂的对象,而这个复杂对象有可以组合成更大的对象。我...
    践行者阅读 511评论 1 3