当前位置: 代码迷 >> Java Web开发 >> 大家来讨论下业务层(BO)该做什么事?该怎样做事?该怎么解决
  详细解决方案

大家来讨论下业务层(BO)该做什么事?该怎样做事?该怎么解决

热度:563   发布时间:2016-04-17 17:19:06.0
大家来讨论下业务层(BO)该做什么事?该怎样做事?
本人表达能力较差,举个例子来说明:
假设有个有个用户登录的功能,Servlet url是:login.do,BO是UserBo,简略代码如下:
Java code
//实体类public class User {    String name;    String password;        public User(){    }        public User(String name, String password) {        super();        this.name = name;        this.password = password;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getPassword() {        return password;    }    public void setPassword(String password) {        this.password = password;    }    }//Dao 类public class UserDao {    public User findUserByName(String username){        return new User(username, "password");    }        public boolean addUser(User user){        // do something...        return true;    }}//Bo 类public class UserBo {    private UserDao dao = new UserDao();        public boolean login(String username,String password){        User u = dao.findUserByName(username);        if( u != null && u.getPassword().equals(password)){            return true;        }        return false;    }    public boolean addUser(User user){        return dao.addUser(user);    }}//Servletimport java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class Login extends HttpServlet {        private UserBo bo = new UserBo();        public void doGet(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        this.doPost(request, response);    }        public void doPost(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        String username = request.getParameter("username");        String password = request.getParameter("password");        boolean b = bo.login(username, password);        if( b ){            request.setAttribute("user", username);            response.sendRedirect("loginSuccess.jsp");        }else{            response.sendRedirect("loginError.jsp");        }    }}


以上是简单的代码,现在很明显的一个问题摆在面前了,那就是Bo类的login方法只是简单的返回一个boolean值
是无法满足我们需求的,因为只返回boolean值的话只能知道登录是成功和失败,但是不能知道失败的原因是什么
所以无法给客户端一个丰富的结果。这只是一个小小的例子,大家来分析一下BO层如何设计才能解决这类问题。
还有,BO类的addUser方法,我以前做的项目里类似的add、update、delete、方法都只是简单的包装下dao的方法
BO在这里又能做些什么呢?都知道分层有好处,但是,如果只是简单的包装,BO就差不多算是没用的了,直接在
Servlet里面引用Dao的接口一样不会影响程序的偶和性。
我的问题的很明确,就是:业务层(BO)该做什么事?该怎样做事?
因为马上就要做项目了,我想在新项目里把功能做的更完善些。
呵呵,本人还是有点可用分的,如果在这里能得到有建设性的回答的话,我是不会吝啬那点点分滴。~


------解决方案--------------------
Java code
public User login(String username,String password) throws LoginException{        User u = dao.findUserByName(username);        if(u == null) {            throw new LoginException("不存在的用户");        }        if(!u.getPassword().equals(password)){            throw new LoginException("密码错误");        }        return u;}
------解决方案--------------------
业务层(BO)该做什么事?该怎样做事?


业务复杂些的话你就需要在public class Login extends HttpServlet {
调用多个DAO------什么能称为业务就是这种方式

LZ您知道了么,如果调用了多个DAO就知道他的好处了。

------解决方案--------------------
分不分层跟你的项目的业务需求相关,一些简单的业务逻辑BO层是可以忽略的,如果业务逻辑复杂,这样分层就更能体会到其中奥妙的,总的来说还是从更好的维护性,可扩展性上进行思索。
------解决方案--------------------

------解决方案--------------------
  相关解决方案