设计模式之组合

一.简介

组合(Composite)模式:又叫作部分-整体模式,它是一种将对象组合成树状的层次结构的模式,用来表示“部分-整体”的关系,使用户对单个对象和组合对象具有一致的访问性。

模式结构:

1.抽象构件(Component):它的主要作用是为树叶构件和树枝构件声明公共接口,并实现它们的默认行为。

2.树叶构件(Leaf):是组合中的叶节点对象,它没有子节点,用于实现抽象构件角色中 声明的公共接口。

3.树枝构件(Composite):是组合中的分支节点对象,它有子节点。它实现了抽象构件角色中声明的接口,它的主要作用是存储和管理子部件。

二.实现

package com.vincent;


import java.util.ArrayList;
import java.util.List;


/**
 * 抽象叶子/非叶子组件
 */
interface IComponent{
    void add(IComponent component);
    void remove(IComponent component);
}


/**
 * 抽象组件
 */
abstract class AbsComponent implements IComponent{
    @Override
    public void add(IComponent component) {
        throw new UnsupportedOperationException();
    }

    @Override
    public void remove(IComponent component) {
        throw new UnsupportedOperationException();
    }
}


/**
 * 叶子节点
 */
class LeafComponent extends AbsComponent{

}


/**
 * 非叶子/树枝组件
 */
class Component extends AbsComponent {
    List<IComponent> componentList = new ArrayList<>();

    @Override
    public void add(IComponent component) {
        componentList.add(component);
    }

    @Override
    public void remove(IComponent component) {
        componentList.remove(component);
    }
}

三.总结

1.组合模式将对象组合成树状层级结构,用统一方式操作叶子节点、非叶子节点

猜你喜欢

转载自blog.csdn.net/Zllvincent/article/details/107305138