在写web程序的时候 在src目录下 要写个 com.luger.dao的包 里面都是interface(UserDao.java)  然后在com.luger.dao.impl(UserDaoImpl.java)里面写类来实现那些interface  然后再在com.luger.service(UserService.java)中写服务的类  在Action中调用Service中的类   为什么还要写个Service类呢?  希望高手赐教!!  谢谢!!!

解决方案 »

  1.   

    这个是设计模式的内容了,分层就是要把一项功能分在不同的层当中,每个层表示一个方面,Service实现业务,DAO实现数据库操作,类似的~
      

  2.   

    web开发的分层结构中,标准的框架结构分如下几层:
    视图层:JSP,HTML,标签,JS,CSS,AJAX,都是用于显示数据的一些技术。
    控制层:用struts2时,采用web.xml中配置的FilterDispatcher;不用时采用servlet或者spring的控制层模块。
    模型层:用struts2时,采用action,用于接收用户请求,调用业务层或者EJB,返回相关页面。
    业务层:系统功能的真正实现,即service。完成具体的业务操作,比如将数据经过算法处理,或者调用持久化层。
    持久化层:专门对数据进行持久化操作,不负责算法处理或逻辑运算,只负责增删改查。
    数据层:数据的存放地,比如各种数据库。该层也能完成一些业务功能,比如使用存储过程,触发器等。由此得出,将业务层和持久化层分开设计,好处有:
    1.可以提高系统的可扩展性,增加新功能的步骤与现有模块不冲突;
    2.方便查错与调试,某一层出现问题不会牵一发而动全身;
    3.方便移植,数据升级只需改动持久化层,或者业务变更只需改动业务层而不影响数据库;
    4.解耦,各层之间使用XML文件标明各层模块的位置,如需变动,无须程序员到场即可由使用者自行更改;
    5.规范化,每一个业务功能点的实现都按照相同的结构实现,即由上述几层构成;
      

  3.   

    说那么复杂干嘛,简单的说,dao层封装了数据操作,但只是一般对一个表封装,而service层是实现业务逻辑,但是你的业务逻辑不可能只包含对一个表的操作吧,因此你的service实现类中可能包含,...dao,xxxdao,以实现业务逻辑
      

  4.   

    cai5说的很对,方便管理,见名知意
    但这也只是一方面,另一方面就是,“合作”
    如果整个应用是你一个人写的,那么怎么分层随你意,只要你个人觉得合适管理,方便就可以了
    但如果你是和别人合作的,那么所有参与合作的人都需要遵循“合作契约”,上述分层,分包的背后含义就是这是一个“合作契约”,满足这份契约的代码基本上是自解释的,方便合作。