Juconcurrent 学而不思则罔,思而不学则殆。

组合模式


概念

组合模式,就是将对象组合成树形结构,以便使用相同的方式访问单个对象和访问树形结构。 这儿最最关键的,莫过于树形结构,而这也是组合模式的结构。我们常用组合模式实现以下场景:

  1. 遍历;
  2. 对象嵌套;
  3. 文件夹/文件

示例

public class Main {

    public static void main(String[] args) {
        new Dir("root",
                Arrays.asList(
                        new File("abc.txt"),
                        new File("def.txt")
                ),
                Collections.singletonList(
                        new Dir(
                                "zookeeper",
                                Collections.<File>emptyList(),
                                Collections.<Dir>emptyList()
                        )
                )
        );
    }

    interface Item {

        String name();
    }

    public static class File implements Item {

        private String name;

        public File(String name) {
            this.name = name;
        }

        @Override public String name() {
            return name;
        }
    }

    public static class Dir implements Item {

        private String name;
        private List<File> files;
        private List<Dir> dirs;

        public Dir(String name, List<File> files, List<Dir> dirs) {
            this.name = name;
            this.files = files;
            this.dirs = dirs;
        }

        @Override public String name() {
            return name;
        }
    }
}

上一篇 模板模式

下一篇 策略模式

Content