组合模式是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,
用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。
组合模式其实说的是对象包含对象的问题,通过组合的方式(在对象内部引用对象)来进行布局,
我认为这种组合是区别于继承的,而另一层含义是指树形结构子节点的抽象
(将叶子节点与数枝节点抽象为子节点),区别于普通的分别定义叶子节点与数枝节点的方式。
public class TreeNode<T> implements Serializable {
private Long id;
private String name;
private Long pId;
// 树的唯一标识
private T node;
// 父id
private TreeNode<T> pNode;
// 使用一个集合来记录该树里的所有子节点
private List<TreeNode<T>> childNodes;
public TreeNode(T entity) {
node = entity;
}
public void addChildNode(TreeNode<T> childNode){
childNode.setpNode(this);
if ( this.childNodes==null){
this.childNodes = new ArrayList<>();
}
this.childNodes.add(childNode);
}
public void removeChildNode(TreeNode<T> childNode){
if (this.childNodes!=null){
Iterator<TreeNode<T>> it = childNodes.iterator();
while(it.hasNext()){
TreeNode<T> node = it.next();
if(node.getId().equals(childNode.getId())){
childNodes.remove(node);
}
}
}
}