713 字
4 分钟
三层架构与分层解耦
AI 摘要
三层架构与分层解耦
定义
三层架构是将后端代码按照职责划分为三个层次的设计模式:
- Controller(控制层):接收前端发送的请求,对请求进行处理,并响应数据
- Service(业务逻辑层):处理具体的业务逻辑
- Dao(数据访问层):负责数据访问操作,包括数据的增、删、改、查
分层解耦的目标是降低层与层之间的依赖程度,遵循”高内聚、低耦合”的软件设计原则。
高内聚:一个模块中各个元素之间联系紧密 低耦合:软件中各个层/模块之间的依赖关联程度越低越好
语法/用法
三层架构代码结构
com.itheima├── controller # 控制层│ └── UserController.java├── service # 业务逻辑层│ ├── UserService.java (接口)│ └── impl/│ └── UserServiceImpl.java (实现类)├── dao # 数据访问层│ ├── UserDao.java (接口)│ └── impl/│ └── UserDaoImpl.java (实现类)└── pojo # 实体类 └── User.javaController层代码
package com.itheima.controller;
import com.itheima.pojo.User;import com.itheima.service.UserService;import com.itheima.service.impl.UserServiceImpl;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import java.util.List;
@RestControllerpublic class UserController { private UserService userService = new UserServiceImpl();
@RequestMapping("/list") public List<User> list(){ List<User> userList = userService.findAll(); return userList; }}Service层代码(接口+实现)
// 接口package com.itheima.service;import com.itheima.pojo.User;import java.util.List;
public interface UserService { public List<User> findAll();}
// 实现类package com.itheima.service.impl;import com.itheima.dao.UserDao;import com.itheima.dao.impl.UserDaoImpl;// ...(省略import)
public class UserServiceImpl implements UserService { private UserDao userDao = new UserDaoImpl();
@Override public List<User> findAll() { List<String> lines = userDao.findAll(); // 解析数据、封装User对象并返回 // ... }}Dao层代码(接口+实现)
// 接口package com.itheima.dao;import java.util.List;
public interface UserDao { public List<String> findAll();}
// 实现类package com.itheima.dao.impl;import cn.hutool.core.io.IoUtil;import com.itheima.dao.UserDao;import java.io.InputStream;import java.nio.charset.StandardCharsets;import java.util.ArrayList;import java.util.List;
public class UserDaoImpl implements UserDao { @Override public List<String> findAll() { InputStream in = this.getClass().getClassLoader().getResourceAsStream("user.txt"); ArrayList<String> lines = IoUtil.readLines(in, StandardCharsets.UTF_8, new ArrayList<>()); return lines; }}执行流程
前端请求 → Controller层接收并响应 → Controller调用Service层处理业务逻辑 → Service调用Dao层获取数据 → Dao层返回数据给Service → Service处理完后返回Controller → Controller响应给前端
常见场景
- 几乎所有企业级Web项目的标准分层结构
- 需要将数据读取、业务逻辑、请求处理分离的场景
- 需要提高代码复用性和可维护性的项目
注意事项
- 单一职责原则:一个类或一个方法只做一件事,只管一块功能,使类、接口、方法的复杂度更低、可读性更强、扩展性更好
- 三层架构的好处:复用性强、便于维护、利于扩展
- 接口+实现的设计:Service和Dao层使用接口定义规范,实现类负责具体逻辑,便于替换实现
- 直接new导致耦合:如果直接在Controller中
new UserServiceImpl(),当需要切换实现类时就必须修改Controller代码,这就是耦合问题,需要通过IOC/DI来解决
相关链接
无
支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或赞助支持!
最后更新于 2026-05-17,距今已过 34 天
部分内容可能已过时
评论区
[ 标签 ]
[ 分类 ]
[ 公告 ]
如果你喜欢,那么欢迎来到我的世界!
了解更多[ 音乐 ]
找不到相关结果。
[ contents ]
[ 全部文章 ]