首页
学习
活动
专区
工具
TVP
发布

Java设计模式学习篇组合设计模式

今天我们讲解到了第十一种设计模式:组合设计模式。有了前面一些设计模式积累的基础,我相信这次的组合设计模式一定不会难倒你们的。

好了,废话不多说,接着往下看。

大学中计算机的基础课程,我们都会学习《数据结构》。里面讲到树的结构,最常用的就是二叉树。二叉树其实就是一种“组合”设计模式

组合设计模式在实际项目中其实应用也很广泛,比如人事管理系统。最上面董事长,到下面技术总监、财务总监、人事总监等。再往下划分,就是组长,员工。可以看出整个结构就是一个树状结果(非二叉树)。

定义一个树状节点如下:

测试类如下:

总结:

组合设计模式其实很简单,在我们 项目中也会经常使用。其实我们在Java中使用LinkedList类(链表)、HashMap,都可以看成组合设计模式。如果你的项目中需要实现一种“包含关系”的结构,那么“组合”设计模式可以考虑。废话不多说,咋们接下来思考几个问题。

思考1:假如我们需要设计一个人力资源管理系统,应该怎么设计类图?

我们首先明确,人力资源管理系统是一个类似树状结构。但是还是有区别的,比如我们董事长(Root节点)和下一级的总监(Branch节点)、以及员工(Leaf节点)所掌握的属性肯定不同,那么我们可以分开设计,但是互相包含。类图如下:

我们定义Root节点接口IRoot以及实现类Root,让其作为根节点(董事长)。然后定义树枝节点的接口IBranch和实现类Branch。最后定义普通员工的ILeaf接口以及实现类Leaf。

我们为了体现“组合”设计模式的思想,我们让IRoot的ArrayList持有所有IBranch,IBranch中的ArrayList持有ILeaf。这样可以通过一层层展开,达到树状结构。

至于具体实现,各位小伙伴可以自己尝试去实现一下。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180509G1LNB500?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

加入 开发者社群

领取 专属20元代金券

Get大咖技术交流圈

扫码加入开发者社群
领券