我的软件设计原则,比如SOLID和DRY一个巨大的风扇。 对OO软件设计存在什么其他的原则是什么?
注意。 我不是在寻找像“注释代码”的答案,而是寻找OO设计原则通过类似讨论的那些Bob大叔 。
我的软件设计原则,比如SOLID和DRY一个巨大的风扇。 对OO软件设计存在什么其他的原则是什么?
注意。 我不是在寻找像“注释代码”的答案,而是寻找OO设计原则通过类似讨论的那些Bob大叔 。
维基百科了相当全面的清单:
http://en.wikipedia.org/wiki/List_of_software_development_philosophies
高内聚 -如何重点是你正在设计模块的职责。
低耦合 -的程度模块依赖于其他模块。
吻
选择组合物过度继承,是一个。
很多人,特别是那些刚接触OO将开始扩展类,当所有他们真正需要的是用的组合物。 真的,如果你要问你自己,是新B级A级? 如果没有,那么你不应该延长。
举例来说,假设我有一个Person
类,一个Car
类,我想做出一个新的名为类DrivenCar
类。 一个天真的实现是说(让我们假装我们得到了多重继承)
class DrivenCar extends Person, Car { ... }
是DrivenCar一个类型的人? 不因此它不应该是延长人。 是DrivenCar车吗? 是是很有意义的扩展
使用组成implmentation会是什么样子
class DrivenCar extends Car {
private Person driver;
}
该GRASP模式。 是的,他们似乎相当琐碎。 更多类似蒸馏到核心的素质,另一方面,更复杂的图案展示。
出口
接口。 大多数的设计模式是基于接口与实现分离。
当您的API预计将增长,使用抽象类,而不是接口。 添加在接口的新方法需要改变所有实现它的类。