软件工程(二十四)

原创 2016年05月30日 19:54:02

面向对象设计原则概述

面向对象设计原则简介
常用的面向对象设计原则包括7个,这些原则并不是孤立存在的,它们相互依赖,相互补充。
这里写图片描述

单一职责原则
单一职责原则分析
* 一个类(或者大到模块,小到方法)承担的职责越多,它被复用的可能性越小,而且如果一个类承担的职责过多,就相当于将这些职责耦合在一起,当其中一个职责变化时,可能会影响其他职责的运作。
* 类的职责主要包括两个方面:数据职责和行为职责,数据职责通过其属性来体现,而行为职责通过其方法来体现。
* 单一职责原则是实现高内聚、低耦合的指导方针,在很多代码重构手法中都能找到它的存在,它是最简单但又最难运用的原则,需要设计人员发现类的不同职责并将其分离,而发现类的多重职责需要设计人员具有较强的分析设计能力和相关重构经验。

单一职责原则实例
实例说明
某基于Java的C/S系统的“登录功能”通过如下登录类(Login)实现:
这里写图片描述
现使用单一职责原则对其进行重构。
这里写图片描述
这里写图片描述

开闭原则
开闭原则定义
* 开闭原则(Open-Closed Principle, OCP)定义如下:
一个软件实体应当对 扩展 开放,对 修改 关闭。也就是说在设计一个模块的时候,应当使这个模块可以在不被修改的前提下被扩展,即实现在不修改源代码的情况下改变这个模块的行为。
* 其英文定义为:
Software entities should be open for extension, but closed for modification.

开闭原则分析
* 开闭原则由Bertrand Meyer于1988年提出,它是面向对象设计中最重要的原则之一。
* 在开闭原则的定义中,软件实体可以指一个软件模块、一个由多个类组成的局部结构或一个独立的类。
* 抽象化是 开闭原则 的关键。
* 开闭原则还可以通过一个更加具体的“对可变性封装原则”来描述,对可变性封装原则(Principle of Encapsulation of Variation, EVP)要求找到系统的可变因素并将其封装起来。

依赖倒转原则
依赖倒转原则定义
* 依赖倒转原则(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.
* 另一种表述为:
要针对接口编程,不要针对实现编程。
其英文定义为:
Program to an interface, not an implementation.

依赖倒转原则分析
*简单来说,依赖倒转原则就是指:代码要依赖于抽象的类,而不要依赖于具体的类;要针对接口或抽象类编程,而不是针对具体类编程。
* 实现开闭原则的关键是抽象化,并且从抽象化导出具体化实现,如果说开闭原则是面向对象设计的目标的话,那么依赖倒转原则就是面向对象设计的主要手段。


欢迎关注我的微信个人订阅号
这里写图片描述
每天多学一点0.0

版权声明:本文为博主原创文章,注明出处,随便转

软件工程视频学习笔记(二十四)

软件测试的策略:测试过程按四个步骤进行,即单元测试、组装测试、确认测试和系统测试单元测试(Unit Testing)单元测试又称模块测试,是针对软件设计的最小单位---程序模块,进行正确性检验的测试工...
  • cjqhuadielei
  • cjqhuadielei
  • 2010年09月01日 18:35
  • 327

网络流二十四题之一 —— 飞行员配对方案问题(AIR)

飞行员配对方案问题
  • XY20130630
  • XY20130630
  • 2016年04月04日 13:11
  • 507

我们眼中的“边缘”人-观FRIST独立电影展《二十四》、《狗日子》之感触

我们有的时候看到一些在某种程度上生活不如自己的人:如拾荒者、乞讨者、残障人士会感觉他们的日子很难过,他们会经常不开心,然后不由自主的就有同情心了,今天下午看了FRIST巡展的两场记录片,都是年轻导演的...
  • x6_9x
  • x6_9x
  • 2015年12月07日 01:29
  • 645

今天二十三,明天二十四

        老爸说他二十三的时候就当厂长了,问我什么时候? 靠!  不过他十六岁就工作,童工么法比啊.算来他混了7个年头才出头,我25毕业,7个年头么也要32了,不急不急.         今天竟...
  • liujinqq
  • liujinqq
  • 2004年10月25日 23:36
  • 767

按对象属性排序

//排序: 客户名称,时间,状态排序                         Comparator comparator = new Comparator(){----------------...
  • danchejikafo
  • danchejikafo
  • 2016年03月24日 10:31
  • 182

要过年了哦-腊月24

看看日历今天是农历腊月24了呀,还有五天就要过年了哦!呵呵,可惜票买的晚了,这几天只能独自的等待了呀|!呵呵!其实今天还是非常激动的因为今天我第一次玩上了数码相机A590,感觉还可以,但还没有入门,有...
  • lishan1998
  • lishan1998
  • 2013年08月01日 14:55
  • 292

QT开发(二十四)——QT文件操作

QT开发(二十四)——QT文件操作一、QT文件操作简介QT中的IO操作通过统一的接口简化了文件与外部设备的操作方式,QT中文件被当作一种特殊的外部设备,文件操作与外部设备操作相同。1、IO操作的主要函...
  • A642960662
  • A642960662
  • 2017年03月26日 12:46
  • 272

操作系统与网络实现 之二十二

键盘机制
  • ya20151015
  • ya20151015
  • 2017年02月03日 16:27
  • 127

详解二十四节气

 立春  自秦代以来,我国就一直以立春作为春季的开始。立春是从天文上来划分的,而在自然界、在人们的心目中,春是温暖,鸟语花香;春是生长,耕耘播种。在气候学中,春季是指候(5天为一候)平均气温10℃至2...
  • FlashDragon
  • FlashDragon
  • 2009年02月09日 22:47
  • 2122

飞行员配对方案问题(网络流二十四题T1)

题目背景 第二次世界大战时期.. 题目描述 英国皇家空军从沦陷国征募了大量外籍飞行员。由皇家空军派出的每一架飞机都需要配备在航行技能和语言上能互相配合的2 名飞行员,其中1 名是英国飞行员,另1...
  • qq_39930039
  • qq_39930039
  • 2017年12月22日 21:56
  • 66
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:软件工程(二十四)
举报原因:
原因补充:

(最多只允许输入30个字)