我记得在某个地方看过关于这个问题的辩论,我正在考虑删除一个基础对象,即我正在研究的系统中的每个业务对象都继承自。它包含一些属性,一些数据库逻辑和一些构造函数逻辑。
这是一种反模式,还是陪审团还在外面?有一个继承的基本合同会更好吗,这需要在每个对象中进行一定量的样板编码?
编辑:我喜欢dsimcha,觉得它在这个问题上反映得很好,我仍然很高兴听到任何进一步的答案
答案 0 :(得分:2)
标准的经验法则是仅使用继承通过多态为类的用户提供灵活性,如果要重用其他类中的代码,则使用组合。但是,只要你没有违反Liskov Substitution Principle,它可能不会太糟糕。编写大量的样板本身也是一件坏事,因为它会掩盖代码中发生实际操作并且反DRY的部分。但是,如果你违反Liskov替换原则,那么这绝对是一个坏主意。
答案 1 :(得分:2)
我也想了解我可能遇到的问题,或者应该了解
一个潜在的问题是如果你使用多重继承:你的子类继承了'Eve'类的两个实例......这就是C ++支持所谓的虚拟继承的原因。
这是一个经常使用的习语:例如在.Net中,所有内容都来自System.Object
...和/或,所有COM对象都实现了IQueryInterface接口。
答案 2 :(得分:1)
真空中没有任何反模式。你的“夏娃班”会给你带来麻烦吗?您希望从移除它中获得什么好处?询问它是否在some standard list of anti-patterns上只会有助于识别实际问题。