Posted on 2008-12-15 17:33
一秋草木 阅读(653)
评论(0) 编辑 收藏 引用 所属分类:
C++
使用面向对象的程序设计方法的主要目的是实现数据的封装。将一组操作作用于特定的数据对象之上。这些数据对象具有很强的相关性,是属于某一客观世界的一类物质的特征属性,这就是类的属性。这些属性上的操作就是类的行为。
根据上面的分析,对于需要实现强类聚,低耦合的程序而言,其最终目的与类封装的目的基本一致。在考虑如何实现时,可以借用OOP的方法。
具体归纳如下:
1、实现数据的封装
使用struct将一组行为的共用对象打包。
2、将模块独立化为文件
① 形式上
需要供外部使用的API接口放在.h中,模块内部函数放在.c文件中。
② 实现上
文件中的函数的操作对象只能是这个struct中的成员。不要让文件外的全局变量来决定模块行为的执行路径。这样的目的在于模块的行为只能由模块自身的状态决定。
3、对象(模块)的状态控制
模块的状态也应该使用专门的操作函数进行封装。
目的是防止全局变量滥用,使修改状态的行为容易被监视与控制。
实际编程中,使用全局变量方式的状态控制场合,状态的变更经常被遗漏。强制使用函数对状态的进入与退出进行标识,防止遗忘。
4、行为控制
将执行的某一行为的判断条件进行封装。
在复杂系统中,一个行为的执行并不是能够由单一的Event就能触发。而是需要诸多状态条件的成立。这种情况下,需要把行为的执行决策提炼为决策函数簇,集中管理。
各个状态作为输入,控制函数是响应函数,输出的是响应行为。
简而言之就是让诸葛亮这个专家去判断【天时】、【地利】、【人和】这些条件是不是都具备了,是不是可以操家伙了。如果还没有,那个孔明兄就要决策是不是装神弄鬼一下,借点东风或是发挥自身才能造出木牛流马来帮帮忙。
好处:
① 减少代码冗余。
需要添加变更的场合,只需要更改这一个决策类即可。
② 集中优势兵力歼灭敌人的有生力量。
总结:
上面的方法的根本目的在于:限制行为,将其固定在一组数据的集合上。减少耦合性。
上面的方法只是从程序结构上控制实现方式,避免出错的可能。不可能解决所有问题。但主要的解决方向是,采用OOP的思想,限制行为,避免全局变量满天飞。