面向对象学习(5):封装与模块化

封装的意义

封装的定义:封装是一个过程,它分隔了构成抽象的结构元素和行为元素。(隐藏抽象的内部视图)

封装的作用:分离抽象的概念接口及其实现。

抽象关注对象可以观察到的行为,封装关注这种行为的实现。

封装通常采用信息隐藏来实现。

隐藏的内容:对象的结构、方法的实现。

让客户只看到接口,客户只需要抽象的职责,并不需要关心职责的实现细节,因为这对客户不重要。

明智的封装使一些可能发生改变的设计决策变得局部化(改变是对内部来说的,处于外部的客户完全不知道内部已经改变了,也不需要知道。)


模块化的意义

发现正确的类和对象、然后将他们放到不同的模块中,减少系统的复杂性!

模块化的定义:模块化是一个系统的属性,这个系统被分解为一组高内聚、低耦合的模块。

高内聚——将逻辑上相关的抽象放在一起

低耦合——减少模块间的依赖关系

分割程序可以在系统内部创造一个定义良好、有文档描述的边界(接口)

模块化将系统划分为一些模块,这些模块可以独立的编译,但又与其他模块有联系。

模块之间的联系是模块之间互相所作出的假定(模块将抽象打包成独立的单元,各个模块通过既定的接口联系)

分解为模块的目标:通过允许模块独立地设计和修改,减少软件的成本。

一个良好的独立的模块,应该能够在不知道其他模块的实现方法时进行修改,并且这种修改不会影响其他模块行为

一般的方案是:将逻辑上相关的类和对象放在同一个模块中,只暴漏出其他模块必须看到的元素。(模块接口应该尽可能小,但又要满足其他用到它的模块的需要)

可能独立变化”的系统细节,应该成为独立模块的秘密;模块之间存在的假定只能是那些“不太可能变化”的东西。

所以在建立模块边界时,要尽量减少开发团队中不同部分之间的接口。(这一块一般应该由经验丰富的设计师来做,经验较少者来完成模块的实现)


类和对象的确定是系统逻辑设计的一部分,模块的确定是系统物理设计的一部分。设计决策是以一种迭代的方式进行的,我们并不能再物理设计之前完成所有逻辑设计,反之亦然。


转载于:https://my.oschina.net/dlam/blog/476679

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值