其实这是我对前一个项目的一个思考。
我们经常谈面向对象编程,甚至对该定义发呆甚至一个多小时,在现在看来,发觉以前的学习都是徒劳无益。我发现我对于“面向对象思维”仅仅停留在表面。对月一些实体的事物我很容易想到面向对象,比如要处理许多不同汽车,我会想到把所有的汽车抽象成一个类,要处理手机里面一个短信,我可能会把它抽象成一个类。但是当遇到非实体的事物时,我就不大会想到把这些非实体的事物抽象成一个类了。
比如“几个界面传递的数据”,可能最可能想到的是一些简单的数据类型类描述他们:假如传递的是一个电话号码,你可能用基本的数据类型int;假如传递的是一组电话号码,你可能用数组来描述它们;再假如传递的数据包含不确定个数电话号码、姓名,你可能想到用hashmap能够实现该功能,等等。但是事情远没有这边简单,需求总是在变化。就说上面最后一种情况,传递的数据内容包括:不确定个数的一组数据,每组数据可能包括:电话号码,姓名两种。这个时候你用hashmap是可以解决问题,但是需要要求传递的数据也必须有id号、姓名时候,这时我必须修改传递方和接受方的数据类型及具体操作,那么每一次添加和删除数据元的时候,我都要重复如此。如果需求要求传递的数据还不能有重复的,这个时候我就头大了,我必须在数据的发送方做过滤,数据接受方做检测,如此以来,造成代码冗余,给人思路不清晰。
但是如果这个时候采用面向对象编程,那就不一样了。首先把每组数据抽象成一个对象,这样你就不会因为每组数据元里面添加删除一个数据相而修改大量原始代码了,接着你可以把整个数据抽象成一个你自定义的数据,它包含了一些你对该数组或数据元素操作的方法,这个时候代码会令你愉快的多。事实上我参考的一些原始的项目代码也是这么做的。
总结一下:对于实体类的事物时,我们很容易想到采用面向对象,但是对于非实体的事物时:数据复杂或者数据需求不定时,采用面向对象更加有用。
浙公网安备 33010602011771号