• 蓝魔丶
    2019-12-27
    每个子类构造函数传入父类实现组合,通过递归获取父类
    
     1
  • Farewell丶
    2020-01-16
    ```
    public class DefaultModule implements Module {

        private final String value;

        public DefaultModule(String value) {
            this.value = value;
        }

        @Override
        public void print() {
            System.out.println(value);
        }
    }
    ```

    ```
    public class ComponentModule implements Module {

        private final Module currentModule;

        private final List<Module> modules;

        public ComponentModule(Module currentModule, Module... modules) {
            this.currentModule = currentModule;
            this.modules = Arrays.asList(modules);
        }

        @Override
        public void print() {
            this.currentModule.print();
            this.modules.forEach(Module::print);
        }
    }
    ```

    ```
    public interface Module {

        void print();

        static void main(String[] args) {
            ComponentModule subModule31 = new ComponentModule(
                new DefaultModule("31"),
                new DefaultModule("311"),
                new DefaultModule("312"),
                new DefaultModule("313")
            );

            ComponentModule subModule3 = new ComponentModule(
                new DefaultModule("3"),
                subModule31,
                new DefaultModule("32"),
                new DefaultModule("33")
            );

            ComponentModule module = new ComponentModule(
                new DefaultModule("0"),
                new DefaultModule("1"),
                new DefaultModule("2"),
                subModule3
            );

            module.print();
        }
    }
    ```

    这样歪
    展开

    作者回复: 👍

    
    
  • Jesse
    2019-12-30
    使用组合模式遍历树:我的想法是,每棵树都可以看成是根节点和子树(左子树,右子树)的组合。因此在定义节点Node的时候,就可以持有两个子树根节点的的引用(left,right),这也是一般链式结构树的实现,用到的就是组合模式。而树的遍历,就可以递归的遍历所有的子树了。

    作者回复: 问题是:不用递归如何遍历树?

     1
    
  • 尹宗昌
    2019-12-27
    无招胜有招
    
    
我们在线,来聊聊吧