软件工程(二十四)

原创 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

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

相关文章推荐

【软件工程】-- 图例总结 上篇

【前言】      “一张图胜过前言万语”这句话来概括软件工程中的图一点都不为过。相比文字和图形,从一开始到现在,我觉得大部分人还是热衷于看图形的,就像我们从小就喜欢看小人书,看漫画胜过看文字性的东西...

软件工程线上课程(C语言实践篇)学习心得总结

王俊杰 + 原创作品转载请注明出处 + 《软件工程(C编码实践篇)》:MOOC课程http://mooc.study.163.com/course/USTC-1000002006一、 前言软件工程是一...

软件工程需求分析文档模板

原文:http://blog.csdn.net/jiangcl207504/article/details/5467285 需求分析类文档模板 编者说明:     许多有经验的开发团队在开始...
  • L_chxu
  • L_chxu
  • 2014年02月25日 09:45
  • 13869

【福利来啦】第十二届中国软件工程大会(CCSE 2015)相约北京!!

中国软件工程大会(CCSE)是由希赛顾问团主办的公益性大会,是中国软件工程领域和软件行业的一次盛会,也是一个中立和开放的交流与合作平台,现已举办了十届。CCSE引领软件人对中国软件产业作更多、更深入的...

软件工程习题整理十一(中英对照)

Which technique is not for obtaining information for the business model? A. interviewing B. send qu...
  • Rainary
  • Rainary
  • 2017年11月09日 14:35
  • 21

通过一个简单控制台的实现来漫谈软件工程基本概念

之前我曾写过同样内容的文章并发表在我的CSDN博客。我让我的同学过目,但他似乎并没有看懂。然后我就卸下来了。因为我感觉我的文笔确实不够好,很多道理阐述的过于冗杂,让别人无所适从。在此,又重写之,估计已...
  • ssd189
  • ssd189
  • 2013年01月26日 16:14
  • 465

阅读有关软件工程与计算机科学区别的文章,谈谈你的看法。

软件工程(英语:Software Engineering[1])1968年秋季,NATO(北约)的科技委员会召集了近50名一流的编程人员、计算机科学家和工业界巨头,讨论和制定摆脱“软件危机”的对策。...

【软件工程】谈谈对攻读计算机研究生的看法

原文地址:谈谈对攻读计算机研究生的看法    作者:刘颖杰尼奥   如果你有实际开发工作经验,感觉自己的水平和实力进入了一个高原期,迫切需要从理论上提高,那么计算机学院是唯一选择...

软件工程之C/S阶段总结

不知不觉C/S的学习已经接近尾声,回头看看自己这半年多的学习,收获满满的呢 一、每一阶段 1.软件工程及机房收费系统第一遍文档 时间:2014年9月8日-2014年10月1...

软件工程 可行性研究 习题2

2-1    可行性分析是要进行一次大大压缩简化系统分析和设计过程,避免时间、资源、人力和金钱的浪费。 技术上的可行性 ——使用现有的技术能实现这个系统吗? 经济上的可行性 ——这个系统的...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:软件工程(二十四)
举报原因:
原因补充:

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