14.5 常见疑难解答

14.5.1 封装在现实开发中给程序员带来什么启发

答:一般来说,程序员都力求软件工程系统的高集成性。一个具有高集成性的软件系统包含着各种执行独立任务的成分,而每一个独立任务都是整个系统的重要组成部分。相反,如果一个软件系统的集成性差,那么系统所包含的各种成分,由于没有很好地被定义,而往往容易发生冲突。

在凝聚封装过程中,重载非常重要。本节将讨论一些启发式知识。这些启发式知识会提供,生成具有高凝聚性、可重载的、基于java.io的封装。

❑封装启发式知识:生成高集成性的封装。

重载是类的重要特性,在实际开发过程中很少单独对一个类进行重载,一般重载都是对多个类进行。java.io封装就是一个高集成性的成功范例,封装中很少有类单独地使用,通常都是同时使用多个类来达到预期的目的。

对于高集成性的封装,软件维护和升级都很容易,因为它们提供了各种集成模块,这些模块中的类能提供各种功能齐全的函数。集成性差的封装包含的类中的函数都是自成一体,相互独立,这样使用起来就会非常困难,因为必须从其他类中提供接口。当然软件的维护也会变得很困难,因为在使用这样的封装时,往往不得不更改其中的类,这样的封装结果给软件的部署带来很大的麻烦。

❑封装启发式知识:注意封装内容对重载的影响。

当设计封装时,通常要考虑封装中类的使用情况,除此之处,也应该考虑到那些虽不是封装的内容,但经常与封装有联系的类。当完成一个高集成性的封装后,就可以把这一封装看成是完整的、可重载的各种成分的集合。

❑封装启发式知识。

封装过程中强调重载功能,封装是各个类的集合,其中的每一个类在程序中都执行一定的功能单元。这样的封装剔除了很多特定的细节,使各种功能单元变得更加容易使用。但是,为了更有效地使用这些封装,开发人员必须深刻地理解封装的函数功能,并懂得如何与封装进行通信。

❑封装启发式知识:以简化方式设计封装。

封装中的函数比一个独立类中的函数更简化有效,提供这样的服务也会产生软件维护的挑战,因为这需要用户对封装的内部函数功能,必须有着清楚的了解。

❑封装启发式知识:提供完整的封装接口。

一个封装的接口包括很多公用类及公用函数,工程中任一其他类都可以调用类中的公用函数。这样一旦这一公用函数改变,调用这一函数的类也要做出相应的更改。如果程序比较简单,可以很容易地找到在哪里调用了这一函数,然而,如果在不同程序之间使用封装,那么问题就会变得很复杂,所以封装的接口需要很好的设计。