组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。
这种模式创建了一个包含自己对象组的类。该类提供了修改相同对象组的方式。
优点:1、高层模块调用简单。2、节点自由增加。
缺点:在使用组合模式时,其叶子和树枝的声明都是实现类,而不是接口,违反了依赖倒置原则。public class TreeNode {
private String leafName;
private List<TreeNode> treeNodeList;
public String getLeafName() {
return leafName;
}
public void setLeafName(String leafName) {
this.leafName = leafName;
}
public List<TreeNode> getTreeNodeList() {
return treeNodeList;
}
public void setTreeNodeList(List<TreeNode> treeNodeList) {
this.treeNodeList = treeNodeList;
}
public TreeNode(String leafName) {
this.leafName = leafName;
this.treeNodeList = new ArrayList<TreeNode>();
}
public void add(TreeNode treeNode){
treeNodeList.add(treeNode);
}
public void remove(TreeNode treeNode){
treeNodeList.remove(treeNode);
}
public void traverse(){
System.out.println();
}
}
实现测试类
public class Tree {
TreeNode treeNode = null;
public static void main(String[] args){
Tree tree = new Tree("parent");
TreeNode A = new TreeNode("A");
TreeNode B = new TreeNode("B");
A.add(B);
tree.treeNode.add(A);
}
public Tree(String treeName){
treeNode = new TreeNode(treeName);
}
}
参考内容
https://sourcemaking.com/design_patterns/composite/java/2