⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 client.java

📁 设计模式描述设计模式描述设计模式描述设计模式描述
💻 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 + -