面向对象软件开发代码结构(2)

使用封装降低信息的复杂度

封装是面向对象编程的核心思想之一。

封装的过程,是将大量的信息(过程、数据),凝缩成满足特定需求的接口的过程。
从数量上来说,好的封装必然是将大量的、与业务交互无关的实现细节隐藏起来,只暴露出少量的交互接口。如果封装后比没有封装情况下信息增加了,那这种情况可以考虑不做封装或轻量级封装,当然这需要结合以后是否需要扩展来考虑。

当然与封装相反的是,信息体的访问完全可以在不封装的条件下访问。这种方式存在的问题是,如果访问的代码存在于多个地方的话,就会产生重复。重复的代码是对修改不友好的。因为一旦需要修改访问代码,就需要改动多个地方,会产生大量的工作量。

另外,封装后的接口相对于原有的信息体而言,一般信息量是大幅度减少的,只需要几个函数和较少的参数和返回值即可访问。这对使用此信息体的开发人员来说,只需要掌握必要接口的使用方法即可,无需每次使用此功能时,都重新回顾此信息体的内部运作原理。

由上可以看出,封装的作用有:

  1. 隐藏实现细节
  2. 提高代码复用率
  3. 减少思考负担
封装形式

函数是最基本的封装形式。
面向对象编程中,类是新的一种封装形式。
库/模块是更高级别的封装形式。
大到系统软件、工具软件也是一种信息体的封装形式。

另一种理解方式

既然封装是一种由多到少的过程,可以将一次封装理解为建立树的过程。
实际项目中,一个软件致力于解决某一领域的某一类问题。在分析需求时,需要将需求逐层分解,大问题化成小问题,不相关的问题之间相互独立,这是一种和封装相反的过程。但是其分解后的结果可以为封装提供依据。

封装相关的问题

封装要侧重对需求不易改变的部分进行。如果封装的部分需求易变,那么以后免不了要做出修改,而且修改的内容可能很多,这就导致以前的封装工作白费。在分析需求的基础上,一种可行的方法是对需求易变的部分进行相对宽松的、轻量级的封装。

封装范围问题。封装的范围要尽量小,要对具有高度关联的信息进行封装,实现高内聚。

减少嵌套。嵌套会增加耦合性,并导致访问路径变长。


未完待续

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

撬动未来的支点

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值