扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
现在有两个不同的应用程序用到了类CSquare,一个是有关几何计算方面的,另一个是有关图形方面的。对于前者而说,程序从来不需要绘制图形;而对于后者来说,程序也从来不需要计算图形的面积。
在上面这种情况下,我们的设计就违反了单一职责原则。它即提供了几何计算方面的功能,又提供了图形绘制方面的功能。这样,在有关几何计算方面的应用程序中就要链接图形显示方面的库文件;而在有关图形方面的应用程序中却链接了数学计算方面的库文件。而这些多余的链接其实是不必要的。它们不但会使编译、链接的时间变长,而且会使应用程序占用的内存增加。如果我们对图形的显示代码做了修改,那么有关几何计算方面的应用程序就要重新链接。我们为什么要为自己不需要的功能重新链接自己的程序呢?因此,上面的设计是不正确的。
下面是一个符合单一职责原则的设计。在这个设计中,把原来的类CShape分为两个类:CGeometricShape和CGraphicalShape,来分别承担几何和图形两方面的职责。同样,分别派生出GGeometricSquare和CGraphicalSquare。
这样,有关几何计算方面的应用程序和有关图形方面的应用程序之间就没有一点儿耦合了。不仅应用程序中不会链接多余的代码,而且对其中的任意一个类进行修改都不会影响到另外一个应用程序。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者