日期:2014-05-20  浏览次数:20978 次

单薄的业务层
相信开发WEB信息的人都用到过三层架构  
表示层--》业务层--》数据访问层

以前一直开发CS结构最近一年一直在开发BS结构,接触到这些再作用过程中发现这个问题

比如:登录这个过程
业务层 
  BLogin.login(username,password) 有这么一个方法
数据访问层
  SQLLogin.login(username,password) 也有这么个方法

我现在的系统的业务层变成了表示层和数据访问层的一个链接了,几乎没有一点业务的数据,只是直接找到对应的方法调用
类似这种情况很多,不知道如何是好,求教中??


------解决方案--------------------
探讨
比如:登录这个过程
业务层
BLogin.login(username,password) 有这么一个方法
数据访问层
SQLLogin.login(username,password) 也有这么个方法
……

------解决方案--------------------
探讨
比如:登录这个过程

------解决方案--------------------
要想使楼主的业务显示丰满一点其实很容易,
SQLLogin.login(username,password)
这个改成
//假如SQLLogin.login方法返回一个UserInfo类型的对象.
UserInfo user = SQLLogin.login(username);
if (user == null) throw new Exception("没有这个用户名");
if (user.Password != password) throw new Exception("用户密码错误")

哈哈,这样就多了一行,丰满了许多.
------解决方案--------------------
只能说你的业务设计的太简单,就Login来说,可以设计的很复杂:
1)login后,可以加载用户可访问的所有资源, 但你没有设置资源访问权限,那你就什么都没有
2)可能登录与计算机挂钩,即设置用户对特定计算机登录的限制,如果你没有这功能,那也啥都没有
3)可能设置同样用户登录数的限制,如不许同时在两地登录,如果你没有这功能,那也啥都没有

诸如此类的很多,因此并不是业务层简单,而是设计得简单,更确切的说是设计时考虑的因素太简单。