借用OOP思想实现面向过程编程的数据封装及模块化设计

 

使用面向对象的程序设计方法的主要目的是实现数据的封装。将一组操作作用于特定的数据对象之上。这些数据对象具有很强的相关性,是属于某一客观世界的一类物质的特征属性,这就是类的属性。这些属性上的操作就是类的行为。 

根据上面的分析,对于需要实现强类聚,低耦合的程序而言,其最终目的与类封装的目的基本一致。在考虑如何实现时,可以借用OOP的方法。

 

具体归纳如下:

1、实现数据的封装

使用struct将一组行为的共用对象打包。

 

2、将模块独立化为文件

①       形式上

需要供外部使用的API接口放在.h中,模块内部函数放在.c文件中。

②       实现上

文件中的函数的操作对象只能是这个struct中的成员。不要让文件外的全局变量来决定模块行为的执行路径。这样的目的在于模块的行为只能由模块自身的状态决定。

 

3、对象(模块)的状态控制

模块的状态也应该使用专门的操作函数进行封装。

目的是防止全局变量滥用,使修改状态的行为容易被监视与控制。

实际编程中,使用全局变量方式的状态控制场合,状态的变更经常被遗漏。强制使用函数对状态的进入与退出进行标识,防止遗忘。

 

4、行为控制

将执行的某一行为的判断条件进行封装。 

在复杂系统中,一个行为的执行并不是能够由单一的Event就能触发。而是需要诸多状态条件的成立。这种情况下,需要把行为的执行决策提炼为决策函数簇,集中管理。

各个状态作为输入,控制函数是响应函数,输出的是响应行为。 

简而言之就是让诸葛亮这个专家去判断【天时】、【地利】、【人和】这些条件是不是都具备了,是不是可以操家伙了。如果还没有,那个孔明兄就要决策是不是装神弄鬼一下,借点东风或是发挥自身才能造出木牛流马来帮帮忙。

 

好处:

①       减少代码冗余。

需要添加变更的场合,只需要更改这一个决策类即可。

②       集中优势兵力歼灭敌人的有生力量。

 

总结:

上面的方法的根本目的在于:限制行为,将其固定在一组数据的集合上。减少耦合性。

上面的方法只是从程序结构上控制实现方式,避免出错的可能。不可能解决所有问题。但主要的解决方向是,采用OOP的思想,限制行为,避免全局变量满天飞。

你可能感兴趣的:(借用OOP思想实现面向过程编程的数据封装及模块化设计)