面向对象-面向职责

作者:firepig 时间:2008-04-30 00:35:08

一些进来的学习心得,可能理解的不够透彻。不过随便写写,算是总结一下。不过感觉对oop还是有了更深的了解。

其实面向对象的内容不多,就三个名词,封装,继承,多态,但是要真正的弄清楚这些也不是一件容易的事情。面向对象的基本是封装,有了封装才有继承,有了继续才有多态。 对于面向对象的编程其实从另外一个角度也可以理解为面向职责的编程。就是有了这些思想之后,程序员开发的时候职责更加的明确了。每个人都有自己专注的任务,比如说可以让精通页面的人只做页面,精通业务逻辑的人只做业务,精通数据库的人只做数据库的操作。做业务的人可以不懂web得一些知识,甚至对数据库他也不需要去关注。  那就需要分层,分层从这个角度来说也是更好的体现出职责,当然从软件工程的概念来说是一个解耦的过程,也是一个可以更好的软件复用的过程,这也是软件开发这么多年来苦苦追求的。

分层有两种一种是学院派,一种是广义派的。对于学院派来说,是很严格的,上层只需要调用下面一层的接口。而下一层则完全不依赖于上一层,它更本不需要知道上面发生了什么事情,它只要做好自己的事情就可以了。  这样做的好处还有在项目更改的时候,你只需要改一层的代码,比如说持久层,因为它完全不依赖于上一层(一般是业务逻辑层)那么它的改动也就不会影响上面的层次,打个比方出于对市场的考虑,一个产品既要支持mysql又要支持oracle,那么对于上面的层次是不是根本就不需要改动。 除了解耦,这样最大的好处就改变了软件开发的工作发式和降低了维护的成本。以往的开发发式,比如说php,我们在做wordpressmu的二次开发的时候都是按模块的方式进行,一个人负责一个模块或者说功能点,从头到尾。而java ee中是用层的方式去分工的,当架构师把整个架构设计好之后,就可以很好的分工了,各自发挥自己的特长,而且是并发进行的,每个开发人员只要把自己的事做好,就跟前面说的一样。 那么还有什么好处呢,就是debug的时候了,这样很容易就可以找到bug。 当然这些是我理解的好处,对于javaee的妙处自然不是这些能概括的。

那么说说广义派吧,这个就没有学院派那么严格了,他允许跨层次的接口和少量的依赖。因为这也有他们的理由,他们的理由是一个特定的项目就有一个特定的环境,比如说我这个项目定了用mysql,那就没必要再去考虑别的数据库,等等。 因为我对这个学派不是很赞同,所以就不说这个了。

。。。。

现在每次写东西都是写了一半就不想写了。。 越写越发觉自己懂得东西太少了,理解的太太不够了。

这些天一直在理解oop,ioc,aop这样的一些原理。 也发了很多时间重新的看reflection这一块,整体上有一点认识,不过如果不用struts2,spring这样的框架,要怎样去自己实现这样的思想,还是有点晕,像依赖注入这样的东西,其实当系统足够复杂要是不用框架,要自己去实现是很难控制的。其实很多东西还是要理解的够透彻就行,比如说struts2确实很简单,如果只是会用的会而不去了解其背后的原理,那么项目中出现的一些怪异问题时候,就无法解决了,像那“神奇”的拦截器,不仅仅要会自己写一个拦截器还要理解它的运行机制等等。 不过现在能用好那些开源框架就可以了,其他的等用好了这些东西在考虑把。

发表评论