我理解的--java组合模式

本文深入探讨了组合模式在层次结构设计中的角色,通过定义根节点、叶子节点和树枝节点,展示了如何实现多态性和代码复用。通过实例代码演示了组合模式的应用,最终结果展示了层次结构关系的设计过程。

组合模式是一种设计层次构架的模式。它提供了一种数据结构,像数组和链表一样,一层一层的。分了两个不同功能的类,他们实现了一个共同的接口。代表了一个东西,但是具体实现不一样。

234707_B0FZ_2248826.png

文章和章节是不同的两种功能的设计。文章不能分支,是具体展示内容的。而章节是容器,能装同样的结构,所以设计的时候要包含一个容器类,来添加节点。

根节点compose:所有类的基类包括(叶子节点 和 其他树枝节点)

public interface Compose {
    void add(Compose compose);

    void display();
}

叶子结点leaf,没有容器类。具体的实现类。

class Leaf implements Compose{
    String name;
    Leaf(String name){
        this.name = name;
    }

    @Override
    public void add(Compose compose) {
        // TODO Auto-generated method stub
        
    }

    @Override
    public void display() {
        System.out.println(name);
        
    }

}

树枝节点composite:递归。包含一个容器类。

public class composite implements Compose {
    String name;

    composite(String name) {
        this.name = name;
    }

    ArrayList<Compose> list = new ArrayList<Compose>();

    @Override
    public void add(Compose compose) {
        list.add(compose);

    }

    @Override
    public void display() {
        System.out.println(name);
        for (Compose compose : list) {
            compose.display();
        }

    }

}

测试类:

class Test {

    public static void main(String[] args) {
        Compose leaf1 = new Leaf("小红帽");
        Compose leaf2 = new Leaf("白雪公主");
        Compose zhang = new composite("第一章");
        Compose jie = new composite("第一节");
        zhang.add(jie);
        jie.add(leaf1);
        jie.add(leaf2);
        zhang.display();

    }

}

结果:

第一章
第一节
小红帽
白雪公主

从结果可以看出:这个模式是表现的层次结构关系的设计。通过多态实现了代码的复用。


转载于:https://my.oschina.net/liuxinquan/blog/649676

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值