面向对象设计的原则 DRY – Don’t repeat yourself DRY ,从名称可以看出DRY(don’t repeat yourself)意思是不写重复代码,而是抽象成可复用的代码块。 如果您有两处以上相同的代码块,请考虑把它们抽象成一个单独的方法;或者您多次使用了硬编码的值,请把它们设置成公共常量。 封装经常修改的代码
在软件领域永远不变的是“变化”,所以把您认为或怀疑将来要被修改的代码封装起来。 这种面向对象设计模式的优点是:易于测试和维护恰当封装的代码。 打开/关闭设计原则
类、方法/函数应当是对扩展(新功能)开放,对修改闭合。 单一职责原则 单一职责原则是另外一个SOLID设计原则,SOLID中的字母“S”指的就是它。 按照SRP,一个类修改的原因应当有且只有一个,或者一个类应当总是实现单一功能。 依赖注入/反转原则 不要问框架的依赖注入功能将会给你带来什么益处,依赖注入功能在spring框架里已经很好的得到了实现, 这一设计原则的优雅之处在于:DI框架注入的任何一个类都易于用模拟对象进行测试,并且更易于维护, 因为创建对象的代码在框架里是集中的而且和客户端代码是隔离的。 优先使用组合而非继承 Favor Composition over Inheritance 如果可以的话,要优先使用组合而非继承。 里氏替换原则 Liskov Substitution Principle LSP 根据里氏替换原则,父类出现的地方可以用子类来替换,例如父类的方法或函数被子类对象替换应该没有任何问题。 LSP和单一职责原则、接口隔离原则密切相关。 接口隔离原则 接口隔离原则指,如果不需要一个接口的功能,那么就不要实现此接口。 编程以接口(而非实现对象)为中心 编程总是以接口(而非实现对象)为中心,这会使代码的结构灵活,而且任何一个新的接口实现对象都能兼容现有代码结构。 代理原则 不要期望一个类完成所有的功能,可以适当地把一些功能交给代理类实现。 总结 以上所有面向对象的设计原则可以帮助您写出灵活、优雅的代码:具有高内聚低耦合的代码结构。 理论只是第一步,更重要的是我们要习得一种能力去发现什么时候使用这些设计原则。 去发现我们是否违反了什么设计原则和影响了代码的灵活性,但是世界上没有什么是完美的, 我们解决问题时不能总去使用设计模式和设计原则,它们大多用于有较长维护周期的大型企业项目。
|