一.简介
组合(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.组合模式将对象组合成树状层级结构,用统一方式操作叶子节点、非叶子节点