从事软件开发的人在工作过程中有时避免不了要封装一些常用的功能给自己或其他人使用,比如数据库连接类、文件上传类、图片处理类等,如果想把类封装得好一点,除了要考虑使用设计模式、可扩展性、可维护性以外,还需要考虑高内聚低耦合、以及开闭原则的问题
,本篇文章讲的就是这些内容。
1.高内聚低耦合
高内聚低耦合,是软件工程中的概念,是判断设计好坏的标准,主要是面向过程的设计,主要是看类的内聚性是否高,耦合度是否低。
高内聚
高内聚就是一个模块内各个元素彼此结合的紧密程度高。
所谓高内聚是指一个软件模块是由相关性很强的代码组成,只负责一项任务,也就是常说的单一责任原则。
低耦合
耦合:一个软件结构内不同模块之间互连程度的度量(耦合性也叫块间联系。指软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差,模块间耦合的高低取决于模块间接口的复杂性,调用的方式以及传递的信息。
) 对于低耦合,粗浅的理解是:
一个完整的系统,模块与模块之间,尽可能的使其独立存在。
也就是说,让每个模块,尽可能的独立完成某个特定的子功能。
模块与模块之间的接口,尽量的少而简单。
如果某两个模块间的关系比较复杂的话,最好首先考虑进一步的模块划分。
这样有利于修改和组合。
Via:
http://baike.baidu.com/view/3082578
http://wenku.baidu.com/view/bb784236ee06eff9aef807ba.html
http://www.baidu.com/s?wd=%B8%DF%C4%DA%BE%DB%B5%CD%F1%EE%BA%CF
2.开闭原则
开闭原则是面向对象设计中“可复用设计”的基石,是面向对象设计中最重要的原则之一,其它很多的设计原则都是实现开闭原则的一种手段。
1988年,Bertrand Meyer在他的著作《Object Oriented Software
Construction》中提出了开闭原则,它的原文是这样:“Software entities should be open for
extension,but closed for modification”。翻译过来就是:“软件实体应当对扩展开放,对修改关闭
”。这句话说得略微有点专业,我们把它讲得更通俗一点,也就是:软件系统中包含的各种组件,例如模块(Modules)、类(Classes)以及功能(Functions)等等,应该在不修改现有代码的基础上,引入新功能
。开闭原则中“开”,是指对于组件功能的扩展是开放的,是允许对其进行功能扩展的;开闭原则中“闭”,是指对于原有代码的修改是封闭的,即不应该修改原有的代码
。
开闭原则能够带来什么好处
如果一个软件系统符合开闭原则的,那么从软件工程的角度来看,它至少具有这样的好处:
可复用性好。
我们可以在软件完成以后,仍然可以对软件进行扩展,加入新的功能,非常灵活。因此,这个软件系统就可以通过不断地增加新的组件,来满足不断变化的需求。
可维护性好。
由于对于已有的软件系统的组件,特别是它的抽象底层不去修改,因此,我们不用担心软件系统中原有组件的稳定性,这就使变化中的软件系统有一定的稳定性和延续性。
Via:
http://baike.baidu.com/view/866233.htm
http://wenku.baidu.com/view/3b99dbbfc77da26925c5b05a.html
http://www.baidu.com/s?wd=%BF%AA%B1%D5%D4%AD%D4%F2
分享到:
相关推荐
该文档主要讲解了高内聚低耦合的相关知识,希望能给你带来帮助!
android高内聚低耦合任务事件总线框架
spring 底耦合高内聚
高内聚低耦合理解,系统的文字帮助你更快速的理解
软件开发中的问题什么是高内聚低耦合?起因模块独立性指每个模块只完成系统要求的独立子功能并且与其他模块的联系最少且接口简单两个定性的度量标准――耦合性和内聚性。耦合Coupling是模块之间依赖程度的度
大牛思想(高内聚低耦合).pdf
耦合主要描述模块之间的关系, 内聚主要描述模块内部. 模块的粒度可大可小, 可以是函数, 类, 功能块等等. # 耦合 模块之间存在依赖, 导致改动可能会互相影响, 关系越紧密, 耦合越强, 模块独立性越差. 比如模块A直接...
一个学生管理系统的demo 高内聚 低耦合 所有对象都是用工厂反射出来的 全部用接口实现
android高内聚低耦合任务事件总线框架 修复任务达800左右时候,更新UI层报错问题。
软件系统的设计思想和原则、设计 方法、系统架构及体系结构、设计模式、运行平台、 开发工具等方面进行综合考虑和合理取舍。
描述强内聚、松耦合与它们分别与测试的关系
耦合度就是某模块(类)与其它模块(类)之间的关联、感知和依赖的程度,是衡量代码独立性的一个指标,也是软件工程设计及编码质量评价的一个标准
耦合内聚.doc
本项目的图书管理系统,具有一个基本的图书管理系统都有的功能,但是与普通管理系统相比,该系统基于MVC架构分层构建,扩展性强,高内聚低耦合, 数据持久化上采用cushy-storage进行文件存储,大大减少文件操作的...
关于高耦合低内聚的专业技能指导作业
博文链接:https://wang20051.iteye.com/blog/121939
主要介绍了高内聚低耦合法则实例代码解析,具有一定借鉴价值,需要的朋友可以参考下。
名词解释,高内聚,低偶合,OSWorkflow,Hibernate 持久化层的游离状态
耦合内聚