其他
试看片段-建模示范视频EA-008/合同管理系统+EA15.1-视频+图片版
有一种偷懒遮羞布,就是胡乱安排操作,然后拼凑出泛化关系,根本不顾安排的操作是否合理。
一些“面向对象”实践经常得到各种名称最后有or或er的类(中文则为“器”),就有这种嫌疑。开发人员可能一开始按照面向过程的思路噼里啪啦把代码写出来,然后出于赶时髦需要“面向对象”,他就把过程名称加上or或er作为类名称,然后把原来的过程作为or或er类的操作,再加上一些泛化关系来做点缀,如图8-99。
图8-99 带有泛化关系的or或er类
可能在某些开发人员眼里,图8-99很有格调,可以用来吹嘘的高大上词汇有:OCP(开放-关闭原则)、DIP(依赖倒置原则)、模板方法模式……等。
当然,这些高大上词汇所描述的好处确实存在,但面向对象所带来的好处不应该仅停留于此。
or或er类往往没有属性,只有操作,大量的逻辑仍然隐藏在子类操作的实现中。当然,开发人员也可能觉得这是好事,“这说明我有算法啊!”——“算法”,又是一个可以吹嘘的高大上词汇。
和其他的偷懒遮羞布类似,这种做法一一对应,思考工作量小,还有各种高大上词汇护法,于是开发人员洋洋得意,感觉自己已经很厉害了,连称“受用”,纷纷去拥抱这种偷懒遮羞布。
or或er类有时会使用“策略模式”作为伪装,如图8-100,哇,我可以灵活组装各种策略!顺便再吹一通“组合优于继承”之类,其实还是换汤不换药,逻辑仍然隐藏在子类操作的实现中。