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


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

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

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

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

定义一个树状节点如下:

测试类如下:

总结:

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

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

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

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

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

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


优质内容筛选与推荐>>
1、一探究竟:善用 MaxCompute Studio 分析 SQL 作业
2、336. Palindrome Pairs
3、Linux嵌入式 -- 内核 (arm) & 文件系统
4、A Better Way to Plan Your Career
5、如何定义立即执行函数?【转】

长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号