Java程序员应当知道的10个面向对象设计原则( 四 )

这个设计原则的亮点在于任何被DI框架注入的类很容易用mock对象进行测试和维护 , 因为对象创建代码集中在框架中 , 客户端代码也不混乱 。 有很多方式可以实现依赖倒置 , 比如像AspectJ等的AOP(Aspect Oriented programming)框架使用的字节码技术 , 或Spring框架使用的代理等 。

原则6:优先利用组合而非继承

如果可能的话 , 优先利用组合而不是继承 。 一些人可能会质疑 , 但我发现 , 组合比继承灵活得多 。 组合允许在运行期间通过设置类的属性来改变类的行为 , 也可以通过使用接口来组合一个类 , 它提供了更高的灵活性 , 并可以随时实现 。 《Effective Java》也推荐此原则 。

原则7:里氏代换原则(LSP)

根据该原则 , 子类必须能够替换掉它们的基类 , 也就是说使用基类的方法或函数能够顺利地引用子类对象 。 LSP原则与单一职责原则和接口分离原则密切相关 , 如果一个类比子类具备更多功能 , 很有可能某些功能会失效 , 这就违反了LSP原则 。 为了遵循该设计原则 , 派生类或子类必须增强功能 。

推荐阅读