购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.6.3 抽象、分解与层次结构

区分外部表现与内部结构的实质是正确运用抽象和分解思想。

1.抽象与外在表现

抽象是一种观察事物时归纳共性认知而忽略差异细节的方法。抽象是对一个系统的简单描述或指称,强调了系统某些细节与属性的同时抑制了另一些细节与属性。好的抽象强调了对读者或用户重要的细节,抑制了那些至少是暂时的非本质细节或枝节。抽象关注了一个事物的外部表现,可以用来分离事物的基本行为、实现等内部结构,如图1-17所示。

图1-17 抽象示意

例如,在定义函数/方法时,接口就是一种抽象,表达了函数/方法的功能,是外部表现,函数/方法的具体程序代码实现是被分离并隐藏起来的内部结构。在定义类时,类的对外接口就是抽象和外部表现,类的成员变量和成员方法的具体程序代码是被分离和隐藏起来的内部结构。在定义一个模块时,导入/导出接口集体表达了一种抽象和外部表现,模块所包括的所有子模块、类及其他抽象实体单位的组织细节是模块被分离和隐藏起来的内部结构。

2.分解与内部结构

分解是人们处理复杂问题的另一个重要方法。如图1-18所示,分解是将一个复杂事物分割为多个简单部分的组合,将一个复杂事物的理解转换为多个简单事物及其之间关系的理解,通过分而治之,将复杂问题简单化,寻找解决方案。

图1-18 分解示意

例如,在处理复杂的模块内部实现时,可以将模块内部分解为多个子模块或者多个类的协作,然后再逐一处理子模块和各个类,这样要比直接处理整个模块容易得多。在处理类的内部实现时,可以将复杂类分解为多个私有类的组合,将复杂公有接口分解为多个私有接口的组合,处理这些私有类和私有接口都比处理原来的复杂类和复杂接口容易得多。在实现复杂代码时,将代码分解为多个块,处理这些块比处理整个代码要容易得多。

3.层次结构

在处理非常复杂的事物时,一次性的抽象和分解往往不能解决问题,这时人们就会在多个层级上逐次进行抽象和分解的组合应用,建立层次结构,如图1-19所示。

图1-19 抽象和分解多层次组合形成的层次结构示意图

软件设计中人们常常会面对非常复杂的问题,就自然会形成层次结构。在每一个层次上,如果忽略了抽象的作用,认识不到外部表现的简洁性,就会把复杂的内部结构不适宜地暴露给外部,降低了上一层次的可理解性。如果忽略了分解的作用,认识不到内部结构的复杂性,就会简单地按照外部表现的形式构造内部,产生不坚固和没有美感的实现。 UbYkeUrmF53Gks/GyV0fxdnI1Vv3TaVL3BcM/5zEnL3oQsD4IzUq47xUtd2wryJQ

点击中间区域
呼出菜单
上一章
目录
下一章
×