編程語言 php java

java設計模式-組合模式Composite

java HTML我幫您 1年前  0次瀏覽
組合模式(Composite Pattern)用于將多個對象用相似的方式整合成單個對象。組合模式用樹的形式組合對象,這些樹表示部分或者整個層的對象。這種類型的設計模式創建了樹型結構的一組對象,屬于結構型模式。
組合模式創建一個容器類包含一組對象。該類提供方法修改這一組相同的的對象。
package com.html580.composite;

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

class TreeNode {
private String name;
private TreeNode parent;
private List children = new ArrayList();

public TreeNode(String name) {
this.name = name;
}

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;
}

/**
* 添加子節點
*
* @param node
*/
public void addChildren(TreeNode node) {
children.add(node);
node.setParent(this);
}

/**
* 刪除子節點
*
* @param node
*/
public void removeChildren(TreeNode node) {
children.remove(node);
}

/**
* 獲得子節點
*
* @return
*/
public List getChildren() {
return children;
}

@Override
public String toString() {
return "TreeNode + ", name=" + name + ", children" + children.toString() + ">";
}

}

public class Client {
public static void main(String<> args) {
TreeNode root = new TreeNode("ROOT");
TreeNode node11 = new TreeNode("NODE11");
TreeNode node12 = new TreeNode("NODE12");
TreeNode node1121 = new TreeNode("NODE1121");
TreeNode node1122 = new TreeNode("NODE1122");
TreeNode node1221 = new TreeNode("NODE1221");
TreeNode node1222 = new TreeNode("NODE1222");
root.addChildren(node11);
root.addChildren(node12);
node11.addChildren(node1121);
node11.addChildren(node1122);
node12.addChildren(node1221);
node12.addChildren(node1222);
System.out.println(root.toString());
}
}
結果(縮進部分是手動添加的,這樣顯示更直觀)
   TreeNode 
        TreeNode 
            TreeNode >,   
TreeNode >
>>,
TreeNode TreeNode >,
TreeNode >
>>
>>
使用場景:將多個對象組合在一起進行操作,常用于表示樹形結構中,例如二叉樹,數等。


發表評論

腾讯彩票兑奖