一. 储备知识
1.1 软件中的三层架构
名字 | 解释 |
---|---|
表示层UI(User Interface layer) | 主要是与用户交互的界面,用于接收用户输入的数据和显示处理后用户需要的数据 |
业务逻辑层BLL(Business Logic Layer) | UI层和DAL层之间的桥梁。实现业务逻辑(包括验证、计算和业务规划等等) |
数据访问层DAL(Data Access Layer) | 与数据库打交道,主要实现对数据库的增删改查。将存储在数据库的数据交给业务层,同时将业务层处理的数据交到表示层去显示 |
1.2 三层架构的目的
使用三层架构的目的是解耦!!!
1.3 三层架构的优势和劣势
优势:
- 结构清晰,耦合度低
- 可维护性高,可扩展性高
- 利于开发任务同步进行
- 容易适应需求变化
劣势:
- 降低了系统的性能。若不采用分层结构,很多业务可以直接访问数据库,以此获得相应的数据,如今却必须通过中间层来实现
- 有时会导致级联的修改。此修改体现在自上而下的方向上。例如:我要在显示层增加一个功能,那么为了保证其设计符合分层式结构,可能需要在相应的业务逻辑层和数据访问层中都增加相应的代码。
- 增加了代码量,也就增加了工作量
二. 代码示例
UserService.java
/*
*约束用户相关操作的业务方法
*/
public interface UserService{
...
}
UserServiceImpl
/*
*service层需要与数据库交互,通过dao层实现
*/
public class UserServiceImpl implements UserService{
private UserDao dao = new UserDaoImpl();
@override
public User login(User user){
return dao.getUserByUsernameAndPassword(user);
}
@override
public boolean regist(User user){
return dao.saveUser>0;
}
}
LoginServlet.java
public class LoginServlet extends HttpServlet{
private static final long serialVersionUID = 1L;
private UserService service = new UserServiceImpl();
boolean b = service.regist(user);
...
}
三. 总结
- 表现层:给用户显示页面,收集用户数据,和用户交互,不直接访问DAO层,将业务交给业务层。由业务层操作DAO层面+Servlet
- 业务层:连接表现层和DAO层(不用写在Servlet和dao中的所有的java代码都提前到业务中),即UserService和UserServiceImpl
- 数据访问层:DAO,直接和数据库访问的人
- Servlet中的请求业务交给Service处理,service通过dao层和数据库进行交互