对设计模式—Composite模式的认识

Composite模式定义:
将对象以树形结构组织起来,以达成“部分-整体” 的层次结构,使得客户端对单个对象和组合对象的使用具有一致性.
Composite好处:
1.使客户端调用简单,客户端可以一致的使用组合结构或其中单个对象,用户就不必关系自己处理的是单个对象还是整个组合结构,这就简化了客户端代码。
2.更容易在组合体内加入对象部件. 客户端不必因为加入了新的对象部件而更改代码

 如一棵树有树枝和叶子,树枝也有叶子,叶子为最小的部分.从大到小顺序Tree->Limb->Leaf

public abstract class Component
{
public String name;

public ArrayList<Component> list;


public Boolean Add(Component item)
{
return false;
}

public Boolean Remove(Component item)
{
return false;
}

public abstract void print();

public abstract void Operation();

}
public class CompositeComponent extends Component
{

public CompositeComponent()
{
list = new ArrayList<Component>();
}

@Override
public void Operation()
{
for (Component item : list)
{
item.print();
item.Operation();
}
}

public Boolean Add(Component item)
{
list.add(item);
return true;
}

public Boolean Remove(Component item)
{
int i = list.indexOf(item);
if (i > 0)
{
list.remove(i);
}
return true;
}

public void print()
{
System.out.println("This is Root");
}

}
public class LimbCoponent extends CompositeComponent
{
public void print()
{
System.out.println(name);
}
}
public class Leaf extends Component
{

@Override
public void print()
{
System.out.println(name);
}
public void Operation()
{
System.out.println("Defoliation on wings");
}

}
public class TestComposite
{
public static void main(String[] args)
{
Component tree = new CompositeComponent();
Component leaf = new Leaf();
Component limb = new LimbCoponent();
limb.name = "This is an limb";
leaf.name = "This is an leaf";
limb.Add(leaf);
tree.Add(limb);
tree.Operation();

}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值