在面向对象编程中,我们一般采用从顶向下的编程方式,即先设计类的层次,如View,Controller,Service,Dao,Domain,Util等,再完善各层中的类。在这个过程中,我发现按功能和形态来分,系统中类可分为以下几个类别:
1.实体类(Entity Classes):这种类一般是现实世界事物在代码世界中的抽象表示,和现实事物有着一一对应关系.存储到持久介质中时一般对应着一条记录.如MIS系统中常见的雇员类Employee,论坛系统中常见的Topic等.由于这些类可以直接从现实事物中归纳抽象得来,写出它们的框架代码一般相对方便容易,但要真正理顺实体类之间的关系需要投入不少精力,这些类一般处于Domain层中.
2.通道类(Plumbing Classes):这种类一般用于充当传输实体类的通道,在编程中,经常需要从持久层取出一个或多个实体类的对象或是将实体类的对象存储到持久层中,这种任务一般由通道类来完成.它们一般由Service或是Dao层中的类来承担.这些类一般不保存状态,对外界来说,它们的对外接口(Public Interface)一般比具体的实现重要,在数量较多时,也经常抽象出一些上层的抽象类或是接口出来以方便调用.
3.辅助类(Assistant Classes):这些类一般起辅助任务,一般可以把共通的处理和变量放在其中供其他层次类调用,这样做一能避免散弹式修改,二能减少重复代码,三能提高代码复用度.辅助类一般放在Util包中.
4.框架类(Framework Classes):这些类一般由固定的框架提供,程序员不能改变.在类的层次上它一般处于界面和业务层之间,即控制层的位置,jsp/servlet中的Servlet,Struts1,2中的Action都是这样的类,它承担了接受用户输入,并展示业务处理的结果的任务.