编程的痛苦,CLASS类的划分

类别:编程语言 点击:0 评论:0 推荐:

一直以来都有一种困惑,我应该如何来定义一个类呢??

在我的观念里面,类是用来完成一些相同任务的模板。好比在现实世界里,工人要做工,农民要种田,学生要念书,商人要经商一样,这些各式各样的角色充实了现实社会的运转并发展;同样各式各样的类也充实着了整个程序的世界,协同工作来完成程序的任务,实现程序的功能。而我就是创造这个程序世界的“上帝”,我要创造出这些类来让这个程序世界丰富多彩,可是我该怎么样来划分每一个功能,定义每一个类呢?

早先刚学习OOP的时候,喜欢做一件事情就定义一个类;比如读取XML文件的节点,我就专门写了一个XMLReader的类,只要在构造这个类的时候输入XML文件名,然后就可以查询这个XML文件的每个结点。后来由于需要,对这个类又进行了一定的扩充,把写XML节点,查询,删除节点等各种功能都写在这个类里面,到此为止可以说我就创造出了一个XMLFile文件读写类。

可是随着程序的扩张,这个XMLFile类又要担负起其它的事情。我的客户端程序的配轩文件App.Config是用XML格式的,应用的范围和这个类相当类似,于是我又再这个类里面加入了专门针对读取App.config文件的方法并把配置信息初始化到其它类中。另外,我的三层结构中,数据的传输采用SOAP的格式,于是我又把制做SOAP格式的任务交给了这个类,还有SQL数据库的数据集读写,用要用到这一个类。。。随着程序开发的深入,一些和XML有关的事情我都把它们加入到这个类中,于是这个类变得越来越庞大,越来越难以控制。虽然我创建了一个功能完善齐全的类,但是当我想到实例化后有那么复杂的内容,我就不敢再去轻易使用它,于是它就变成了一个无用的类了。我绕了世界走了一圈后又回到了原点。

观察一下我定义的这个类,可以分为三个部份:第一部份是字段,这些字段用来保存各个输入和输出的变量,比如XML文件名,查找节点的路径名,节点内容等等,随着类的扩大,这一部份的内容也越加复杂,到后来不得不注释每一个字段才能分清楚。第二部份是一些通用的方法,包括这个类的构造函数和析构函数,这一些方法一般都很通用,比如查找指定节点,删除指定节点等等,这一些方法相对比较固定,定义完之后就再也没有多大的变化。第三部份是这个类要完成程序交于的一些特殊性的方法,比如专门用来读取配置文件App.config,格式化SOAP,这些方法只是调用了上面那些通用方法的一种“批处理”格式,不过 实际用到的绝大多数都是这一类的方法。

现在我有一种很深的困惑,这个类到底是做什么用的,用来读取配置文件还是用来格式化SOAP。我不知道要在什么时候实例化一个这样的类,因为我担心实例化对程序会带来很大的负担,这个类实在太大了,如果读一个XML文件也要实例化这样一个类的话,那很难以让我接受啊!

最后,我只能把这个类拆分开来,各尽其职,该读配置文件的还是去读配置文件,该格式化SOAP的还是去做它应做的事。可是这时我又发现,这些不同的类之间又有它们的相同点,如果把它们分成一个个的话,又有代码复用的问题,我是不是又重蹈C++时代码堆积拷贝的问题。

我不知道应该怎么样来定义类,这就和上帝创造世间万物一样的困难,我不是上帝,于是我创建的类就像史前的恐龙一样,很快就要灭亡。

本文地址:http://com.8s8s.com/it/it28001.htm