定义(GoF《设计模式》):将对象组合成树形结构一表示“部分整体”的层次结构,使的用户对单个对象和使用具有一致性。
组合模式:使用我在处理树形结构中的复杂等级机构时非常有用,它可以使得客户端处理复杂对象就想处理简单对象一样,从而使得客户端与复杂对象之间解耦。 比如:递归数据结构、分级数据结构、树形结构。 例:树形菜单,文件系统。
想到组合模式的实现我就想到了传销,中国大多数直销企业打着直销的名,干着传销的事。想必大家都知道传销是怎么一回事。最上面一个团队发展他们的下面的下线,他们的下线在发展下线,他们下线的下线在发展下线,这样不断的循环,而他们的收入就是从下线的收入中提取。 哈哈 这才真正体现了“以人为本”,人越多钱越多.........
//传销核心实现 public abstract class Group{ //团队模型 public String name; public List<Group> groups; public Group(String name){ this.name=name; this.groups=new ArrayList<Group>(); } public abstract void add(Group group); public abstract void remove(Group group); public abstract void display(Group group); } public class SummitGroup extends Group{ public SummitGroup(String name){ super(name); } public void add(Group group){ this.groups.add(group); } public void remove(Group group){ this.groups.remove(group); } public void display(Group group){ //................. } } public class OneGroup extends Group{ public OneGroup(String name){ super(name); } public void add(Group group){
this.groups.add(group); } public void remove(Group group){ this.groups.remove(group); } public void display(Group group){ //................. }
} main(){ Group summit=new SummitGroup("顶级团队") Group one1=new OneGroup("一级团队"); Group one2=new OneGroup("一级团队"); Group two1=new TwoGroup("二级团队"); Group two2=new TwoGroup("二级团队"); Group two3=new TwoGroup("二级团队")
one1.add(two1); one2.add(two2); one2.add(two3); summit.add(one1); summit.add(one2); }