组合模式
设计原则:遵循依赖倒置、开闭原则,破坏接口隔离
常用场景:当有一个结构可以组合成树形结构,且需要向客户端提供一致的操作接口,使得客户端操作忽略简单元素与复杂元素
使用概率:30%
复杂度:中
变化点:节点的数量
选择关键点:对外提供一致操作接口的结构是否可转化为树形结构
逆鳞:结构不稳定或结构中的节点有递归关系
主要思想:
体现部分与整体的层次结构
一般都持有多个本类型的其它对象实例 常见的就是树形结构
public class TreeNode {
private String name;
//持有本类型的其他对象
private TreeNode parent;
private TreeNode left;
private TreeNode right;
//体现整体结构 整体都有删除左右等等方法
public void remodeLeft() {
this.left = null;
}
public void remodeRight() {
this.right = null;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public TreeNode getParent() {
return parent;
}
public void setParent(TreeNode parent) {
this.parent = parent;
}
public TreeNode getLeft() {
return left;
}
public void setLeft(TreeNode left) {
this.left = left;
}
public TreeNode getRight() {
return right;
}
public void setRight(TreeNode right) {
this.right = right;
}
}