📄 client.java
字号:
/*
* Created on 2005-5-11
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package com.test.pattern.struct.composite;
import java.util.ArrayList;
import java.util.Iterator;
/**
* @author Administrator
*
* 意图 将对象组合成树形结构以表示“部分-整体”的层次结构。
* Composite 使得用户对单个对象和组合对象的使用具有一致
* 性。
* 适用性你想表示对象的部分-整体层次结构。
* 你希望用户忽略组合对象与单个对象的不同,
* 用户将统一地使用组合结构中的所有对象。
*/
abstract class Component {
protected String strName;
public Component(String name) {
strName = name;
}
abstract public void Add(Component c);
public abstract void DumpContents();
// other operations for delete, get, etc.
}
class Composite extends Component {
private ArrayList ComponentList = new ArrayList();
public Composite(String s) {
super(s);
}
public void Add(Component c) {
ComponentList.add(c);
}
public void DumpContents() {
// First dump the name of this composite node
System.out.println("Node: " + strName);
// Then loop through children, and get then to dump their contents
Iterator iterator = ComponentList.iterator();
while (iterator.hasNext()) {
Component c = (Component) iterator.next();
c.DumpContents();
}
}
}
class Leaf extends Component {
public Leaf(String s) {
super(s);
}
public void Add(Component c) {
System.out.println("Cannot add to a leaf");
}
public void DumpContents() {
System.out.println("Node: " + strName);
}
}
/// <summary>
/// Summary description for Client.
/// </summary>
public class Client {
Component SetupTree() {
// here we have to create a tree structure,
// consisting of composites and leafs.
Composite root = new Composite("root-composite");
Composite parentcomposite;
Composite composite;
Leaf leaf;
parentcomposite = root;
composite = new Composite("first level - first sibling - composite");
parentcomposite.Add(composite);
leaf = new Leaf("first level - second sibling - leaf");
parentcomposite.Add(leaf);
parentcomposite = composite;
composite = new Composite("second level - first sibling - composite");
parentcomposite.Add(composite);
composite = new Composite("second level - second sibling - composite");
parentcomposite.Add(composite);
// we will leaf the second level - first sibling empty, and start
// populating the second level - second sibling
parentcomposite = composite;
leaf = new Leaf("third level - first sibling - leaf");
parentcomposite.Add(leaf);
leaf = new Leaf("third level - second sibling - leaf");
parentcomposite.Add(leaf);
composite = new Composite("third level - third sibling - composite");
parentcomposite.Add(composite);
return root;
}
public static void main(String[] args) {
Component component;
Client c = new Client();
component = c.SetupTree();
component.DumpContents();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -