第6章 设计原则.pptx

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第6章 设计原则

第六章 设计原则;本章教学内容;一、单一职责原则;3. 解决办法 遵守单一职责原则,将不同的职责封装到不同的类或模块中。 4. 举例 开发一个俄罗斯方块游戏,要考虑将程序分为游戏逻辑和界面逻辑两个类。游戏逻辑指表示游戏区域的数组中每一项值变化的问题,如下落、旋转、碰撞检测、移动等;界面逻辑负责根据数组的数据进行绘制和擦除等。 ;二、开放——封闭原则 开放——封闭原则(Open Closed Principle,简称OCP) 1. 核心思想 软件实体(类、模块、函数等)应该是可扩展,而不可修改的。也就是说,对扩展是开放的,而对修改是封闭的。 对扩展开放,意味着有新的需求或变化时,可以对现有代码进行扩展,以适应新的情况; 对修改封闭,意味着类一旦设计完成,就不要对类进行任何修改。 ; 2.产生原因 “需求总是变化的”、“世界上没有一个软件是不变的”,因此对于软件设计者来说,必须在不修改原有系统的情况下,实现灵活的系统扩展。 3. 实施办法 只有依赖于抽象。实现开放封闭的基本思路就是对抽象编程,而不对具体编程,因为抽象相对稳定。让类依赖于固定的抽象,所以对修改就是封闭的;而通过面向对象的继承和多态机制,可以实现对抽象体的继承,通过覆写其方法来改变固有行为,实现新的扩展方法,所以对于扩展就是开放的。;三、依赖倒转原则 依赖倒转原则( Dependence Inversion Principle ,简称DIP) 1. 核心思想 (1) 高层模块不应该依赖低层模块,两者都应该依赖于抽象。 (2)抽象不应该依赖于细节。细节应该依赖抽象(要针对接口编程而不要针对实现编程)。 其中,抽象指抽象类或接口;细节指具体实现类。 依赖倒转原则的本质是通过抽象(抽象类或接口)使各个类或模块的实现彼此独立,不相互影响,实现模块间的松耦合。;1)如何理解高层模块不应该依赖低层模块,两者都应该依赖于抽象 在面向过程的开发中,为了使常用的代码可复用,一般都会把这些常用的代码写成许许多多函数的程序库,这样做新项目的时候调用这些函数就可以了。 例如:我们做的项目大多要访问数据库,所以我们就把数据库的代码写成了函数,每次做新项目时就去调用这些函数,这就是高层依赖于低层模块。问题是,我们在做新项目的时候,会发现业务逻辑的高层模块是一样的,我们希望能重用这些高层模块,但是这些高层模块和低层模块的数据库绑定在一起了,这样就没办法复用这些高层模块。 如果高层模块和低层模块都依赖于抽象(接口或抽象类),只要接口稳定,那么任何一个更改都不用担心其他受到影响了。;2)针对接口编程而不是针对实现编程意义 我们现在使用的电脑有各式的品牌,联想、神舟、戴尔等等,电脑需要用到鼠标,键盘;假设鼠标、键盘是针对某一个品牌的机器实现去做的话,那么市面上的键盘和鼠标就都是各式各样的,有一天鼠标或键盘坏了,我们要记住这个电脑是什么品牌、什么型号的再去买,很麻烦。 现在的电脑基本上都是使用USB接口,无论是键盘也好,鼠标也好,只要买USB接口的就可以使用。同时,使用USB接口还可以有其他的扩展,例如,实现了USB接口的小台灯,只要接上USB线就可以照明、实现了USB接口的充电器,接到电脑上就可以充电。? ; 一些生活中的例子: 1、AGP插槽。主板和显卡之间关系的抽象。 主板和显卡通常是使用AGP插槽来连接的,只要接口适配,不管是主板还是显卡更换,都不是问题。 2、驾照。司机和汽车之间关系的抽象。 有驾照的司机可以驾驶各种汽车。 3、电源插座。;2. 实现方法 在实际编程中,一般需要做到如下3点: 低层模块尽量都要有抽象类或接口,或者两者都有。 变量的声明类型尽量是抽象类或接口。 使用继承时遵循里氏替换原则。 ????一句话,依赖倒转原则的核心就是要面向接口编程。 ;四、迪米特法则(P100) 迪米特法则(Law of Demeter,简称 LoD)又称为最少知识原则 1. 核心思想 一个对象应当对其他对象有尽可能少的了解,不和陌生人说话。 迪米特法则不希望类之间建立直接的联系。如果真的有需要建立联系,也希望能通过它的友元类来转达。 2. 产生原因 类与类之间的关系越密切,耦合度越大,当一个类发生改变时,对另一个类的影响也越大。;3. 解决方案 降低类之间的耦合。一个软件实体应当尽可能少的与其他实体发生相互作用。每一个软件单位对其他的单位都只有最少的知识,而且局限于那些与本单位密切相关的软件单位。 由于每个类尽量减少对其他类的依赖,因此,很容易使得系统的功能模块功能独立,相互之间

文档评论(0)

wyjy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档