我非常喜欢软件设计原则,例如 SOLID 和 DRY 。面向对象软件设计还有哪些其他原则?
请注意。我不是在寻找像“评论你的代码”这样的答案,而是寻找像Uncle Bob所讨论的那样的OO设计原则。
答案 0 :(得分:6)
来自维基百科的相当全面的列表:
http://en.wikipedia.org/wiki/List_of_software_development_philosophies
答案 1 :(得分:4)
High Cohesion - 您正在设计的模块的职责重点。
Low Coupling - 模块依赖其他模块的程度。
答案 2 :(得分:2)
答案 3 :(得分:2)
选择继承的成分,是一个。
许多人,特别是那些刚接触OO的人,在他们真正需要的是使用作文时,会开始扩展课程。真的,如果你应该问自己,新的B级是A级吗?如果没有,那么你不应该延长。
例如,假设我有一个Person
类,一个Car
类,我想创建一个名为DrivenCar
类的新类。一个天真的实现就是说(让我们假装我们得到了多重继承)
class DrivenCar extends Person, Car { ... }
DrivenCar是一种人吗?不,所以不应该扩展Person。 DrivenCar是一辆车吗?是的,因此扩展
是有意义的使用合成,实施将是
class DrivenCar extends Car {
private Person driver;
}
答案 4 :(得分:2)
GRASP模式。是的,它们似乎相当微不足道。更像是蒸馏到其他更多参与模式所展示的核心品质。
答案 5 :(得分:1)
答案 6 :(得分:0)
接口。大多数设计模式都基于界面和分离。实施
答案 7 :(得分:0)
当您的API预计会增长时,请使用Abstract类而不是Interface。在Interface中添加新方法需要更改实现它的所有类。