iteye_10091
iteye_10091
2010-03-27 22:37
浏览 187
已采纳

SSH框架中设计问题

我遇到的疑惑

 

--action
   --CommonAction

   --AAction

   --BAction

   --CAction

 

--service

   ---AService

   ---BService

 
--service.impl

   --AServiceImpl

   --BServiceImpl 
 

--dao

  --ADao

  --BDao

 
--dao.impl

  --ADaoImpl

  --BDaoImpl

 

 

public abstract class CommonAction extends DispatchAction{

    public AService aService;

    pulbic BService bService;

   ...setter/getter

}

public class BAction extends CommonDispatchAction {

public ActionForward getList(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)throws Exception {

          List<a> aList = aService.getAList();
          List<B> bList = bService.getBList(); ...}}
public class AServiceImpl implements AService {

   private ADao aDao;
   ...setter/getter

 public void add(A a) {
    aDao.add(a);
}

public List<a> getAList(){
 return aDao.getAList();
}
...
}
              

问题1:我的一个service对应一个dao,service种方法和dao中方法一模一样,而且service实现类中仅仅是调用dao方法。这种实现方法有什么不妥,好的实现方式是什么?

 

问题2:如上代码,我想在 BAction 中获得A数据或者C,D,E,F ... 数据只能先定义一个抽象类CommonAction,这样实现方法的弊端是什么,如果我想实现这个功能(在 BAction 中获得A数据或者C,DE,F数据),应该怎样设计?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

6条回答 默认 最新

  • nanlei1987
    nanlei1987 2010-03-29 21:03
    已采纳

    [code="java"] /**
    * 个人信息页跳转
    */
    public String personal() throws Exception {
    userInfo = getServMgr().getUserService().getUserInfo(getLoginUserId());
    return "personal";
    }[/code]
    userInfo是Map类型的,Action里只需准备数据集合,业务处理都是下一层的事情
    [code="java"] public Map getUserInfo(Integer userId) {
    // 取出User对象
    User user = getDAOMgr().getUserDAO().getUserById(userId);
    // 对象转换为Map
    Map userMap = objectToMap(user);
    return userMap;
    }[/code]
    就是这么个思路

    点赞 评论
  • qwe_rt
    qwe_rt 2010-03-27 22:50

    [quote]我的一个service对应一个dao,service种方法和dao中方法一模一样,而且service实现类中仅仅是调用dao方法。这种实现方法有什么不妥,好的实现方式是什么?[/quote]
    这样设计挺好的,这样设计将数据库的操作层与服务层分离。耦合性小。

    点赞 评论
  • wanghaolovezlq
    wanghaolovezlq 2010-03-27 22:57

    这种设计都是典型的N层架构嘛

    表示层action -》业务逻辑层service-》数据访问层dao

    每一层都有这一层的职责,

    点赞 评论
  • qwe_rt
    qwe_rt 2010-03-27 23:21
    点赞 评论
  • qwe_rt
    qwe_rt 2010-03-28 00:00

    [quote]一般现实企业开发应用中是否都这样设计的?[/quote]

    个人认为分层如下:
    Web层
    业务层
    服务层
    数据访问层

    点赞 评论
  • nanlei1987
    nanlei1987 2010-03-28 10:03

    1.写一个ServiceManager,把所以的Service注册进去,这个Mananger和所有的Service都在Spring中注入,就可以直接getBean()获取他们的对象了,这样比较方便。
    2.最好不要在Action中相互操作,数据的处理往下降一层,就可以使用1中的办法来解决了。

    点赞 评论

相关推荐