组合模式

组合模式:将对象组合成树形结构以表示"部分-整体"的层次结构。"Composite使得用户对单个对象和组合对象的使用具有一致性。"

public abstract class AComponent {

protected String name;
public AComponent(String name){
System.out.println(name);
}
abstract public void Add(AComponent c); //添加结点
abstract public void Remove(AComponent c); //移除结点
abstract public void Display(int i); //输出结点结构
}

 

//组合类 

public class Composite extends AComponent{

static AComponent component;

private ArrayList children = new ArrayList();

public Composite(String name) {

super(name);  }

public void Add(AComponent c) {

this.component = c; children.add(c); }

public void Remove(AComponent c) {

children.remove(c); }

public void Display(int i) {

Iterator iter = children.iterator();

AComponent c = null;

c = (AComponent) iter.next();

while(iter.hasNext()&&iter.next().equals(null))

{ System.out.println("abc------"+c.name); } } }

 

//单对象类

public class Leaf extends AComponent{  

public Leaf(String name) {

super(name); }

public void Add(AComponent c) {

System.out.println("不能添加子项!"); }

public void Remove(AComponent c) {

System.out.println("不能移除子项!"); }

public void Display(int i) {

System.out.println("abc"+new String()+name); } }

 

//测试类 

public class Test {

public static void main(String[] args) {
Composite root = new Composite("根目录");
root.Add(new Leaf("---子项A"));
root.Add(new Leaf("---子项B"));
Composite comp = new Composite("组合X");
comp.Add(new Leaf("---子项XA"));
comp.Add(new Leaf("---子项XB"));
root.Add(comp);
root.Add(new Leaf("---子项C"));
Leaf l = new Leaf("---子项D");
root.Add(l);
root.Remove(l);
root.Display(2);
}
}

转载于:https://www.cnblogs.com/lee0oo0/archive/2012/05/21/2511486.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值