软件培训:面向对象编程原则

上传人:m**** 文档编号:215119281 上传时间:2023-06-01 格式:DOCX 页数:4 大小:69.40KB
返回 下载 相关 举报
软件培训:面向对象编程原则_第1页
第1页 / 共4页
软件培训:面向对象编程原则_第2页
第2页 / 共4页
软件培训:面向对象编程原则_第3页
第3页 / 共4页
点击查看更多>>
资源描述
软件培训:面向对象编程原则之依赖倒置原则一、依赖倒置原则的定义依赖倒置原则:(Dependence Inversion Principle),简称 DIP。其英文定义为: High level modules should not depend upon low level modules, Both should depend upon abstractions. Abstractions should not depend upon details, Details should depend upon abstractions.即:高层模块不应该依赖低层模块,二者都应该依赖其抽象。抽象不应该依赖细节,细 节应该依赖抽象。所谓抽象是:抽象类或者接口,是不能被实例化的。所谓细节是:具体的实现类,实现接口或者继承抽象类所产生的类,可以通过关键字 new 直接被实例化的。二、依赖倒置原则所解决的问题问题:类A直接依赖类B,假如要将类A改为依赖类C,则必须通过修改类A的代码来达成。 这种场景下,类A一般是高层模块,负责复杂的业务逻辑;类B和类C是低层模块,负责 基本的原子操作;假如修改类A,会给程序带来不必要的风险。解决方案:将类A修改为依赖接口 I,类B和类C各自实现接口 I,类A通过接口 I间接与类B或 者类C发生联系,则会大大降低修改类A的几率。依赖倒置原则基于这样一个事实:相对于细节的多变性,抽象的东西要稳定的多。以抽 象为基础搭建起来的架构比以细节为基础搭建起来的架构要稳定的多。依赖倒置原则其本质就是契约式编程,通过抽象(抽象类或接口)使各个类或模块的实 现彼此独立,不相互影响,实现模块间的松耦合。使用接口或者抽象类的目的是制定好规范 和契约,而不去涉及任何具体的操作,把展现细节的任务交给他们的实现类去完成。如果没 有实现这个原则,那么也就意味着开闭原则(对扩展开发,对修改关闭)也无法实现。在实际编程中,我们一般需要做到如下3点:1、低层模块尽量都要有抽象类或接口,或者两者都有。2、变量的声明类型尽量是抽象类或接口。3、使用继承时遵循里氏替换原则。三、依赖倒置原则的实现方式1、通过构造函数传递依赖对象,比如在构造函数中的需要传递的参数是抽象类或接口的方 式实现。2、通过set访问器传递依赖对象,即在我们设置的set访问器的参数为抽象类或接口,来实 现传递依赖对象。3、接口声明实现依赖对象,也叫接口注入,即在函数声明中参数为抽象类或接口,来实现 传递依赖对象,从而达到直接使用依赖对象的目的。四、依赖倒置原则实例实例一:一个持C照的驾驶员能够驾驶BENZ轿车。其类图可以如下表示:那么一个持C照的驾驶员难道不能驾驶BMW吗?显然是不可能的,那么我们就需要抽象出轿车接口,类图如下:从上面的类图中,只有持C照的驾驶员能够驾驶ICAR,那么持有B照,A 照的驾驶员也可以驾驶ICAR。那么我们就需要抽象出驾照类,让抽象的驾照类 依赖于抽象的icar。实例二:例如,我们最常见的一种系统架构三层架构的示意图如下1界面层业务逻辑层数据访问层在这样的架构中,如果我们的业务细节发生变化;所采用的数据库发生变化,那么我们是否需要去修改业务逻辑层以及数据访问层呢。显然,根据依赖倒置原则和开放封闭原则来说,这样的设计是不够好的。那么我们需要将其修改为如下方式:(以用户管理的类图来说:)7uscrAdd.aspxIDataHelper*CannectDB() *Eie:utDat3SetU Ex 曲 utS 邮 0lUserMaregeAddUsen;) *EdKUi)Use (ManageDataHe|scr在上面的类图中,如果业务逻辑或者数据库发生变化,我们只需要去重新编写实现类就 可以了,而整个程序的逻辑是由两个抽象的接口来表述的,他们的稳定就体现我们整个程序 的稳定。细节的变更不会影响到我整体的稳定。当高层的模块依赖于低层的模块时,这些高层模块就很难在不同的环境中复用。但是, 当那些高层模块独立于低层模块时,它们就能很简单地被复用了。这正是位于框架设计的最 核心之处的原则。
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸设计 > 毕设全套


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!