最近我听说OOP(Java)有9条规则.我只知道四个是抽象,多态,继承和封装.OOP还有更多规则吗?
看起来像你正在寻找的是面向对象设计的原则.
从敏捷软件开发原则,模式和实践中总结.这些原则是数十年软件工程经验中来之不易的产品.它们不是单一思维的产物,但它们代表了大量软件开发人员和研究人员的整合和着作.虽然它们在这里被提出作为面向对象设计的原则,但它们确实是软件工程长期原则的特例.
SRP单一责任原则一个班级应该只有一个改变的理由.
OCP开放 - 封闭原则软件实体(类,包,方法等)应该是可以扩展的,但是关闭以进行修改.
LSP Liskov Substition Principle Subtypes必须可替代其基类型.
DIP依赖性倒置原则抽象不应该依赖于细节.细节应该取决于抽象.
ISP接口隔离原则 客户不应强迫依赖于他们不使用的方法.接口属于客户端,而不属于层次结构.
REP释放 - 重用等效原则 重用的颗粒是释放的颗粒.
CCP共同关闭原则 包中的类应该针对相同类型的更改一起关闭.影响已关闭包的更改会影响该包中的所有类,而不会影响其他包.
CRP通用重用原则 包中的类可以一起重用.如果重用某个包中的某个类,则可以全部重用它们.
ADP Acylcic依赖关系原则 在依赖关系图中不允许循环.
SDP稳定的依赖原则 取决于稳定性.
SAP稳定的抽象原则 一个包应该是抽象的,因为它是稳定的.
任何规则都不确定.所有这些提到的东西对我来说更像是OO范例.我们遵循的建议很少,
分离关注
每班的单一责任
首选组合而不是继承
编程到接口
加上比利博布已经提到了所有这些
这些OO原则直接来自Head First Design Patterns:
封装变化的东西
编程到接口,而不是实现
赞成组合而不是继承
一个班级应该只有一个改变的理由(单一责任原则)
子类型必须可替代其基数(Liskov替代原则)
类可以打开以进行扩展,但是关闭以进行修改(开放 - 封闭原则)