组合模式实例商品类别树

简介: 组合模式实例商品类别树

1.题目:
有一个根节点,比如“服装”,它没有父节点,它可以包含其他的节点。
树枝节点,有一类节点可以包含其他的节点,称之为树枝节点,比如“男装”、“女装”和“母婴”。
叶子节点,有一类节点没有子节点,称之为叶子节点,比如“衬衣”、“夹克”、“裙子”、“套装”等。
如果碰到类似上面这种,需使用对象树来描述或实现的功能,都可以考虑使用组合模式,比如读取XML文件,或是对语句进行语法解析等。
2.UML图
在这里插入图片描述
3.代码

package 组合模式;

public abstract class Cloth {

protected String name;
public Cloth(String name)
{this.name=name;
}
public abstract void Add(Cloth c);
public abstract void Remove(Cloth c);
public abstract void display(String str);
}
package 组合模式;

import java.util.ArrayList;
public class ConcreteCloth extends Cloth {

    private ArrayList<Cloth>children=new ArrayList<Cloth>();
    public ConcreteCloth(String name)
    {
        super(name);
    }
    @Override
    public void Add(Cloth c) {
        children.add(c);
    }
 
    @Override
    public void Remove(Cloth c) {
        children.remove(c);
    }
 
    @Override
    public void display(String str) {
        str+="-";
        System.out.println(str+name);
        for(Cloth component:children)
        {component.display(str);
        }
    }
}
package 组合模式;

public class Custome extends Cloth {
    public Custome(String name) {
        super(name);
    }
 
    @Override
    public void Add(Cloth c) { 
    }
 
    @Override
    public void Remove(Cloth c) {
    }
 
    @Override
    public void display(String str) {
    str+="-";
    System.out.println(str+name);
 
    }

}
package 组合模式;

public class Jacket extends Cloth {

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

    @Override
    public void Add(Cloth c) {
    }

    @Override
    public void Remove(Cloth c) {
    }

    @Override
    public void display(String str) {
        str+="-";
        System.out.println(str+name);

    }

}
package 组合模式;

public class Shirt extends Cloth {

    public Shirt(String name) {
        super(name);
        // TODO Auto-generated constructor stub
    }

    @Override
    public void Add(Cloth c) {
        // TODO Auto-generated method stub

    }

    @Override
    public void Remove(Cloth c) {
        // TODO Auto-generated method stub

    }

    @Override
    public void display(String str) {
        str+="-";
        System.out.println(str+name);
    }

}
package 组合模式;

public class Skirt extends Cloth {

    public Skirt(String name) {
        super(name);
        // TODO Auto-generated constructor stub
    }

    @Override
    public void Add(Cloth c) {
        // TODO Auto-generated method stub

    }

    @Override
    public void Remove(Cloth c) {
        // TODO Auto-generated method stub

    }

    @Override
    public void display(String str) {
        str+="-";
        System.out.println(str+name);
    }

}
package 组合模式;

public class Test {

    public static void main(String[] args) {
        ConcreteCloth root=new ConcreteCloth("服装");
        ConcreteCloth comp1=new ConcreteCloth("男装");
        ConcreteCloth comp2=new ConcreteCloth("女装");
        comp1.Add(new  Shirt("衬衫"));
        comp1.Add(new Jacket("夹克"));
        comp2.Add(new Skirt("裙子"));
        comp2.Add(new Custome("礼服"));
            root.Add(comp1);
            root.Add(comp2);
            root.display("");
    }

}
目录
相关文章
|
数据可视化 uml
UML图讲解(关联关系,单向关联,双向关联,自关联,组合关系,依赖关系,继承关系,实现关系)
UML图讲解,关联关系,单向关联,双向关联,自关联,组合关系,依赖关系,继承关系,实现关系。
2098 0
UML图讲解(关联关系,单向关联,双向关联,自关联,组合关系,依赖关系,继承关系,实现关系)
|
9月前
|
JSON 数据格式
树形结构展示数据
树形结构展示数据
57 0
|
12月前
|
缓存 JSON NoSQL
分类树菜单,我从2s优化到0.1s
分类树菜单,我从2s优化到0.1s
|
存储 SQL 机器学习/深度学习
数仓中指标-标签,维度-度量,自然键-代理键,数据集市等各名词解析及关系
这是在数据分析中常见的概念,下钻可以理解成增加维的层次,从而可以由粗粒度到细粒度来观察数据,比如对产品销售情况分析时,可以沿着时间维从年到月到日更细粒度的观察数据。从年的维度可以下钻到月的维度、日的维度等。
数仓中指标-标签,维度-度量,自然键-代理键,数据集市等各名词解析及关系
|
Scala 开发者
匹配嵌套结构和商品打折需求 | 学习笔记
快速学习匹配嵌套结构和商品打折需求
57 0
C++类的继承实验(简易的商品系统)
实验概述: 实验目的: 通过归纳与总结类之间的继承与派生关系,设计并编程实现若干个相互有关联的自定义类,而后对这些类进行简单使用。
333 0
电商商品模块数据设计与关系图
电商商品模块数据设计与关系图
212 0
电商商品模块数据设计与关系图
12、【分类模块管理】——查询当前平类子节点(平级)
该接口的含义就是,当我们查询家用电器品类的时候,我们将所属于家用电器的品类查询出来,关于在首先我们判断登陆者是否是管理员,我们在10、【分类模块管理】——添加分类接口开发有说明。
848 0
聚合(根)、实体、值对象精炼思考总结
原文:聚合(根)、实体、值对象精炼思考总结 1.      聚合根、实体、值对象的区别? 从标识的角度: 聚合根具有全局的唯一标识,而实体只有在聚合内部有唯一的本地标识,值对象没有唯一标识,不存在这个值对象或那个值对象的说法; 从是否只读的角度: 聚合根除了唯一标识外,其他所有状态信息都理论...
1317 0