为了账号安全,请及时绑定邮箱和手机立即绑定

java设计模式之组合模式

这标题格式是不是要该一下啊,我去,要是个字符才可以。。。
通用代码,我是引用了”设计模式之禅“,这也是自己对这本书的内容的总结。谢谢阅读。


组合模式的定义如下:
将对象组合成树形结构以表示“部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性
再本人看来,组合模式就是把类A和类B的共同部分抽象出来形成接口。对于树形结构(如二叉树形式的)很合适。恩,就是这么简单的模式,说不定自己就在用了。

通用代码:
//抽象部分
public abstract class Componet
{
//添加抽象的功能。
public void doSomething(){}
}
//树枝构件,此处就是右子树
public class Composite extends Component
{
private ArriayList<Component> componentArrayList=new ArrayList<Component>();
public void add(Component componet)
{
this.componentArrayList.add(componet);
}
public void remove(Component component)
{
this.componentArrayList.remove(component);
}
public ArrayList<Component> getChidren()
{
return this.componentArrayList;
}
}
//树叶结构,可以看做是左子树。一般左子树是抽象后的最小的单位。
public class Leaf extends Component
{
//覆写父类的方法,添加自己的代码
public void doSomething(){}
}
组合模式的优点

  1. 一颗树形机构的所有节点都是Component,局部和整体对调用者就是说没有任何区别。
    2.节点可以自由增加,这很容易看出来,只要确定了左右节点的位置,就可以按部就班的继承就可以了。
    组合模式的缺点:
    1.与依赖倒置原则冲突,可以想象的出,如果要用Leaf类必须在主类里初始化,这就是高层对底层的依赖。高层和底层应该都依赖他们的接口,这才是面向对象编程。不过对于真正的组合模式,这不是问题。因为我们一般是使用关系型数据库实现数据的输入。
    组合模式的使用场景:
    1.维护和展示部分关系的场景:如文件和文件夹管理。
    2.树形结构的一定要用了。
点击查看更多内容
3人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消