由一个简单的OOP的例子所想到的

记得以前在看关于讲面向对象的书的时候都会拿Dog和Cat来做例子。比如他们都会叫,则他们都应该有个Bark方法,然后进一步抽象到Animal这个类。

然后进一步往深处讲,则会跟你谈到设计类的时候应该要关注这个类的行为,其实也就是方法了。同时它具有哪些对我们有用的字段和属性,这里我们不谈这个。

但是现在在实际的操作过程中呢?我感觉很多人都是拿了一个问题之后立即开始分析里面所包含的实体类,这个实体类有哪些字段和属性,完了以后加上CRUD方法,最后再在Business Layer里面根据界面的需求进行一通拼装。OK,Mission Complete!

所以在经过一段时间之后我就迷糊了。比如说在一个人力资源管理系统中,有一个人力资源部用户类HRUser,这个用户可以添加一条新雇员的信息,那么我想这个AddNewEmp的方法应该放在HRUser里面,因为是HRUser来做这件事的。但是实际做项目当中我感觉好像HRUser应该是一个实体类,里面不会给任何的方法,这个AddNewEmp的方法肯定会被写在别的地方,它的存在只是为了去响应用户在UI上点了添加雇员的这个按钮罢了。

中午也因为这个问题跟朋友讨论了一下,他说他喜欢实体类然后加控制器的这种做法。比如说你对Emp这个雇员类当作实体类的话,那么就应该有个EmpController,负责Emp的CRUD这些事情。这样做的好处在于分的很清楚。这样做确实是可以,但是如果这样那么好像我开头所讲的那种分析就没什么意义了,一切东西都能够做成一个实体类加控制器嘛。那么到底是书上讲的压根在实际工作中就行不通呢还是我们的做法根本就不是OOP呢?

到底应该怎样做呢?谈谈你的看法吧。

posted @ 2006-11-26 00:07    阅读(9902)  评论(20编辑  收藏  举报