三层架构的构建与理解
1.1 分层的作用:
- 观察下面代码有什么问题?
1.2 什么是分层:
- 小公司:所有的办公区域在一起
- 大公司:分层明确
- 前台(表现层):直接面向客户
- 办公大厅(业务层):处理各种业务,如:登录、注册、转账
- 档案层(数据访问层):访问数据库
1.3 各层的作用:
层 | 作用 |
表示层(view) | 处理用户的输入与输出,直接面向客户 |
业务层(service) | 用来处理表示层提交的数据,处理业务逻辑的代码,调用数据访问层来访问数据库 |
数据访问层(dao) | Data Access Object 数据访问对象,进行数据的增删查改操作 |
1.4 分层的方式:
通过包进行划分
包名 | 功能描述 |
com.sunny.view | 表示层,专门与用户打交道 |
com.sunny.service | 业务层,判断数据是否合法...(判断数据是否合法,处理事务) |
com.sunny.dao | 数据持久层,与数据库打交道 |
其它包:com.sunny.utils 工具类,entity实体类,test测试类 |
1.5 分层开发的顺序:
- 表示层=>业务层=>(Dao层)数据持久层
1.6 分层的优缺点:(分包管理代码)
- 优点:
- 解耦:降低了代码之间的耦合度,分工更加明确。(Spring 类与类的接口,面向接口编程)
- 可维护性更强,如果有一层的代码需要修改,不会影响其它层。
- 可扩展性更强,如果有一层添加新的功能,不会影响其它层。
- 可重复性更强,不同层之间可以多次调用其它层的方法。
- 缺点:
- 工作量增加了,因为需要分包,编写很多类。
- 代码复杂程度提升了。
2.1 使用三层架构实现用户注册与登录案例:
- 案例需求:
- 案例效果图:
- 三层架构原理图:
- 使用数据库保存用户的信息
- 定义User类
- 编写DAO层,增加saveUser()和findUserByName()、findAllUsers()方法
- 编写业务层增加register()和isExist()和login()、showAllUsers()方法
- 编写View层增加register()方法和login()方法
3.1 代码实现: