重构 — 改善既有的类图设计
条款8:消除继承类和基类中重复的依赖关系
黄国强 2008/5/12
大家再读本条条款之前,请先读一下“条款4:消除重复的依赖关系”。本条款目的和条款4,只是表现形式不同。见图 1。
![](https://p-blog.csdn.net/images/p_blog_csdn_net/acloudhuang/393338/o_16.gif)
图1
图中类1依赖于类3,类2也依赖于类3。在这里类2和类3之间是聚合关系,聚合关系的依赖方向是从菱形箭头指向直线的另一端。相当多的人把这个依赖关系搞反了。聚合关系的符号有一个演变之前,请看图2。相信看过这个图后,以后依赖关系应该不会搞错了。
![](https://p-blog.csdn.net/images/p_blog_csdn_net/acloudhuang/393338/o_16_1.gif)
图2
这里的重构是要消除重复的依赖关系,结果见图3。我们把类1和类3之间的依赖线拿掉了。
![](https://p-blog.csdn.net/images/p_blog_csdn_net/acloudhuang/393338/o_17.gif)
图3