组合模式

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

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

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

    • List 因为树枝会带其他的子树枝和叶子,所以需要个集合属性,
    • 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属性

你可能感兴趣的:(组合模式)