【设计模式】五:依赖倒置与里氏代换原则

/** * 依赖倒转原则 * 定义: 抽象不该该依赖细节,细节应该依赖于抽象 * 解释:开发过程当中,要学会针对接口编程,不要针对需求进行编程 * 特征: *      高层模块不该该依赖低层模块,两个都应该依赖抽象 *      抽象不该该依赖细节,细节应该依赖抽象 * 理解:在面向过程开发中,为了使代码复用,常常将经常使用的代码进行封装成方法提取出来,这样在实现新功能的时候, *      若是有用来的方法,直接调用该方法就能够了,好比链接数据库,咱们将其封装成一个方法,每次须要链接时, *      高层模块调用这个底层函数就能够了,这个也叫作 【高层模块】依赖【底层模块】; *      可是高层模块依赖底层模块这样的耦合性仍是比较高,好比咱们须要链接其余的数据库,或者由mysql转换成orcal了 *      那此时咱们封装的函数不适用于当前场景了,那就须要从新开发; *      可是,若是使高层模块和底层模块都依赖于接口或者抽象类,只要接口和抽象类稳定不变,那么作任何一个更改都不用 *      担忧其余受到影响,这样就使用高层模块,底层模块都很容易的被复用,并且不会影响其余的组件 *//** * 里氏代还原则 * 白话翻译:一个软件实体若是使用的是一个父类的话,那么必定适用于其子类,并且它察觉不出父类对象和子类对象的区别 *          也就是说在软件里面,把父类都替换成它的子类,程序的行为都没有变化,简单说就是子类型必须能替换它的父类型 *          并且对程序没有影响 * 特征:只有当子类能够替换掉父类,软件单位的功能不受到影响,父类才能真正被复用,并且子类能够在父类的基础上增长新的行为 * * 因为有里氏代换原则,才使得开发-封闭成为可能 * * 正是因为子类型的可替换性才使得使用父类类型的模块在无需修改的状况下就能够扩展 * *//** * 总结: *  依赖倒转其实就是谁也不须要依靠谁,除了约定的接口,你们能够灵活自如; *  依赖倒转其实能够说是面向对象设计的标志,若是编写时考虑的都是如何针对抽象编程而不是针对细节编程, *  即程序中全部的依赖关系都是终止与抽象类或者接口,那就是面向对象的设计了,反正就是过程化的设计 */
相关文章
相关标签/搜索