组合模式

Android知识总结

一、简介

把一组相似的对象当作一个单一的对象,为的是减少数据类型

1、定义一个抽象对象,它可以表示两种或多种实际类型的对象
2、在对象内部,聚合一个抽象类型对象
3、构造时,递归这种联系
4、适合构造树形结构的对象关系

二、代码

代码中一般没有特殊情况,用一个叶子节点就可以了。

  • 抽象基类
public abstract class Node {
    private String name;

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

    public abstract List<Node> getChildren();

    public String getName() {
        return name;
    }
}
  • 尾节点
public class LeafNode extends Node{
    public LeafNode(String name) {
        super(name);
    }

    @Override
    public List<Node> getChildren() {
        return null;
    }
}
  • 中间节点
public class DistrictNode extends Node{
    private List<Node> children = new ArrayList<>();

    public DistrictNode(String name) {
        super(name);
    }

    @Override
    public List<Node> getChildren() {
        return children;
    }

    public void addChild(Node node){
        children.add(node);
    }

    public void delChild(int i){
        children.remove(i);
    }
}
  • 测试
public class CompositeClient {
    public static void main(String[] args){
        sendFruit();
    }

    public static void sendFruit(){

        //根目录
        DistrictNode root = new DistrictNode("根");

        //一线目录
        root.addChild(new DistrictNode("上海"));
        root.addChild(new DistrictNode("天津"));
        DistrictNode districtNode = new DistrictNode("北京");
        root.addChild(districtNode);

        //二级目录
        districtNode.addChild(new DistrictNode("海淀区"));
        districtNode.addChild(new DistrictNode("西城区"));
        DistrictNode districtNode2 = new DistrictNode("朝阳区");
        districtNode.addChild(districtNode2);

        //三级目录
        districtNode2.addChild(new LeafNode("三里屯"));
        districtNode2.addChild(new LeafNode("朝阳外街"));

        System.out.println(JSON.toJSON(root));
        //以下物流运输业务。。。。

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

推荐阅读更多精彩内容

  • 我们知道地球和一些其他行星围绕着太阳旋转,也知道在一个原子中,有许多电子围绕着原子核旋转。我曾经想象,我们的太阳系...
    yufawu阅读 797评论 0 4
  • 目录 本文的结构如下: 引言 什么是组合模式 模式的结构 典型代码 代码示例 优点和缺点 适用环境 模式应用 一、...
    w1992wishes阅读 922评论 0 2
  • 大家在上学的时候应该都学过“数据结构”这门课程吧,还记得其中有一节叫“二叉树”吧,我们上学那会儿这一章节是必考内容...
    辽A丶孙悟空阅读 250评论 0 8
  • [TOC] 1. 定义 我们知道古代的皇帝想要管理国家,是不可能直接管理到具体每一个老百姓的,因此设置了很多机构,...
    悠娜的奶爸阅读 167评论 0 0
  • 个人学习笔记分享,当前能力有限,请勿贬低,菜鸟互学,大佬绕道如有勘误,欢迎指出和讨论,本文后期也会进行修正和补充 ...
    Echo_YeZ阅读 504评论 0 0