组合模式实例商品类别树

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

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("");
    }

}
目录
相关文章
|
6天前
|
uml
UML 类图几种关系(依赖、关联、泛化、实现、聚合、组合)及其对应代码
UML 类图几种关系(依赖、关联、泛化、实现、聚合、组合)及其对应代码
12 0
|
17天前
|
JSON API 开发者
孔夫子根关键字获取在售商品接口详解
孔夫子旧书网是国内领先的二手书交易平台,为开发者提供多样化的API接口以支持数据交互。本文指导如何利用这些API通过关键字检索在售商品详情,并提供Python代码示例。首先需注册开发者账号并创建应用以获取API密钥;然后根据官方文档构建请求。示例代码展示了如何使用requests库调用API获取并解析数据。请注意替换密钥和检查频率限制及遵守隐私法规。
|
3月前
|
JSON 测试技术 应用服务中间件
实战SSM_O2O商铺_25【商品类别】商品类别列表展示从Dao到View层的开发
实战SSM_O2O商铺_25【商品类别】商品类别列表展示从Dao到View层的开发
39 0
|
数据可视化 uml
UML图讲解(关联关系,单向关联,双向关联,自关联,组合关系,依赖关系,继承关系,实现关系)
UML图讲解,关联关系,单向关联,双向关联,自关联,组合关系,依赖关系,继承关系,实现关系。
2632 0
UML图讲解(关联关系,单向关联,双向关联,自关联,组合关系,依赖关系,继承关系,实现关系)
|
JSON 数据格式
树形结构展示数据
树形结构展示数据
67 0
|
缓存 JSON NoSQL
分类树菜单,我从2s优化到0.1s
分类树菜单,我从2s优化到0.1s
|
Scala 开发者
匹配嵌套结构和商品打折需求 | 学习笔记
快速学习匹配嵌套结构和商品打折需求
68 0
C++类的继承实验(简易的商品系统)
实验概述: 实验目的: 通过归纳与总结类之间的继承与派生关系,设计并编程实现若干个相互有关联的自定义类,而后对这些类进行简单使用。
362 0
接口返回店铺创建场景下店铺类目不是类目叶子节点
此错误是类目参数填写有误,请校验是否存在。类目在线版本:[url]https://doc.open.alipay.com/docs/doc.htm?treeId=205&articleId=104497&docType=1#s1[/url]类目离线版本:[url=http://aopsdkdownload.
388 11