从学语言开始,到现在,所有的资料几乎都在推崇面向对象的思维方式,可是这两天我却发现还是有大部分的朋友不能够很好的深刻理解这个东西,即使是理解,也没真正的应用到实际当中去。就前好像前天我自己编写的一个网站注册功能,写了几个类文件,分别是执行层,方法层,表示层,实体层。这样写下来之后,一个简单的注册方法里套了好几层,好多朋友都说看不懂,太麻烦。可是我自己却有自己深刻的体会。      过去我也是跟大家一样,比如一个表单,要注册的时候,直接就把表单元素传到参数上去,甚至都不用参数,直接拼字符串。代码很少,感觉很间接。可是后来由于我研究了一段时间的网页编程才深刻的领悟到,一个庞大的系统,是多么需要面向对象的思维啊。他的好处是不言而喻的。比如,低耦合-----也就是说,即使我任意拿掉一个处理方法中的某一部分,都不会影响其他部分的运行,只不过就是少了一个功能而已,这个与原来的那种动一处就牵连一大片的做法想比,简直好多了。再比如,方法的任意组合搭配,如果把这些方法都做成单一的,独立的功能,那么我们就可以随时随地去组合方法来实现更多种的功能,并且文档的结构也更加清晰,更加有层次感,这个也是原来做不到的。再比如,继承,封装和重载,体现了数据的安全性。最后,就是开发和维护的方便性,可以说,如果工程比较小,还不太觉得,但是一旦工程比较大,层次比较多和深的时候,开发和维护的成本会大大降低,并且能够节省大量的时间,处理错误和升级也可以做到一针到位。    虽然继承,封装和重载这三个次,几乎大家都是耳熟能详了,可是却还是有不少朋友对我的做法提出了很大的疑问,最典型的就是"你的程序太复杂了"别人看不懂.呵呵我想,这可能是跟他们的思维方式有关系.   这篇段文是给菜鸟写的,当然,我自己也是菜鸟,但是,我正在努力的理解和运用这个思维方式,希望高手们提提意见,菜鸟们如果觉得有用,我就算米白写.谢谢
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/tianmao111/archive/2010/06/15/5672562.aspx

解决方案 »

  1.   

    呵呵,给我这写天自己的一点心得吧
    比如,我做一个论坛,那我就写一个 板块类,板块list类,帖子类,帖子list类,还有connection连接类,
    其中connection连接类也是执行方法类,里边全都是最后要被执行的比如cmd.executeXXX方法。当然这个类是静态的。再写两个控制类,也就是调用方法类,这个可以是非静态的。比如,我要显示主题列表,那么我就可以,先实例化一个板块list类,然后根据用户的选择(参数,是板块id)来跳到主题列表页,这时,就可以根据这个id来实力化一个板块类,板块类里包含页面集合类也就是,帖子list类,这是用来翻页的,然后在帖子list类里又包含了帖子类的实力。这些类里都有属性和方法,用set,和get方式来写。看起来很复杂,但是当你把这些类都写好了之后,就会发现,往往只要传一个id参数,就可以直接生成一个集合或者他的子类的实力,就有点象工厂一样,比如我的帖子list类里就包括一个note类型的table或者arraylist。只要我实力化这个帖子list类,我就可以直接用 notelist.arr(td)来取出里边的帖子,这样很方便吧?这是重点:
    我个人的一般做法
    1)象Connection类,一般都写成静态的。
    2)经常会用到的,难以记住的数或字符串,要写成枚举,以方便理解(这是参数特别多的时候的做法)。
    3)写一个控制类,类似j2ee里的control类,它可以不写成静态的,里边包括了最直接的调用方法,这些方法也可以进行搭配组合(伪方法?)方便人理解的。一般这些方法都不带参数,而是直接在方法体里实力化实体类。最后要传出一个table,string,int,arraylist等等。
    4)写一个实体类,里边用set,get方法写好属性,可以是只读的,也可以是只写的,我一般会写两个类。
    一个是实体类,另一个是实体集合类。这样,实体集合类直接就可以在里边包含一个list或者table属性。这样在调用的时候特别方便。因为实体类已经写好了。、
    实体类里一般包含各种属性。可以不写构造函数,当然写也可以,最好不要带参数。这样方便灵活。
    实体类里还包括一个必须的传入属性,这个属性比如要可以写才行。其他属性最好是只读的,
    实体类里,基本上用不到的方法和中间属性(参数)都可以写成private的。当然,必要的时候,里边可以包含一些public的方法,我一般是用来转换的方法我就写一个,比如根据传入的id得到name,等等,因为我把类写成了只能传一个参数,但是,当我需要通过传其他参数,来得到同样的元素的时候,就要用到这些方法了。虽然这样有点违背面向对象思想。但是没关系。5)一般的流程就是,界面层。也就是页面调用control层。control调用connection执行层,执行完后,control层里会得到一个值,这个值很有可能就是实体类的集合或者事体类,最后control传出这个值,给界面元素,为什么我说,一般是传一个实体类呢?大家一定会明白了,因为,界面上可不只那一个控件而已啊。哈哈所以嘛,他们是需要这个实体类的属性的。。好了基本的经验就到这里
      

  2.   

    共同学习.Net技术,分享.Net学习资料,分享.Net工作机会
    .Net技术群108412141 欢迎您的加入