组合模式实例商品类别树

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

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);
}
AI 代码解读
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);
        }
    }
}
AI 代码解读
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);
 
    }

}
AI 代码解读
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);

    }

}
AI 代码解读
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);
    }

}
AI 代码解读
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);
    }

}
AI 代码解读
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("");
    }

}
AI 代码解读
目录
打赏
0
0
0
0
0
分享
相关文章
docker-registry 私有仓库镜像 之 查看与删除
docker-registry 私有仓库镜像 之 查看与删除
2900 0
如何在处理重复值时保持数据的原始顺序?
可以在处理数据重复值时有效地保持数据的原始顺序,确保数据在清洗和预处理过程中不会因为重复值的处理而导致顺序混乱,从而保证了数据分析结果的准确性和可靠性。
253 64
|
9月前
|
Springboot的Container Images,docker加springboot
本文介绍了如何使用Spring Boot的层索引文件和Docker优化Spring Boot应用程序的容器化过程,包括解压缩可执行jar和创建分层Docker映像的方法。
91 9
Springboot的Container Images,docker加springboot
利用Matplotlib绘制数据可视化图表
**摘要:** 本文介绍了Python的绘图库Matplotlib在数据分析和科学计算中的重要性。Matplotlib是一个开源库,提供类似MATLAB的接口,支持静态、动态和交互式图表的绘制,并能保存为多种格式。文章详细讲解了Matplotlib的基本用法,包括安装库、导入模块和绘制简单折线图的步骤。还展示了如何绘制柱状图并添加数据标签。通过这些例子,读者可以了解如何利用Matplotlib进行数据可视化,并对其进行自定义以满足特定需求。
157 4
Serverless 应用引擎产品使用合集之如何配置MySQL的白名单IP
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
ENVI实现最小距离法、最大似然法、支持向量机遥感图像监督分类与分类后处理操作
ENVI实现最小距离法、最大似然法、支持向量机遥感图像监督分类与分类后处理操作
589 1
针对OSS数据集成场景下的功能全面优化【Dataphin V3.12]
OSS(Object Storage Service)是对象存储服务,适用于存放各种文件类型,Dataphin已经支持连接到OSS进行文件数据的读取与写入。本期版本升级中,Dataphin对于OSS的数据同步场景做了全面的功能升级,包括数据源、输入组件与数据组件,一起来了解一下吧~
357 0
AI助理
登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问

你好,我是AI助理

可以解答问题、推荐解决方案等