分层解耦!!

一、三层架构

介绍*

三层架构就是:把一个完整的代码块,按照各自功能的不同分为:请求、响应数据层、逻辑处理层、数据访问层

案例——>
案例图片1
上述案例的处理逻辑从功能上看可以分为三个部分,也就是上面所说的:请求、响应层,逻辑处理层,数据访问层。
–数据访问:负责业务数据的维护操作,包括增、删、改、查等操作。
–逻辑处理:负责业务逻辑处理的代码。
–请求处理、响应数据:负责接收页面的请求,给页面响应数据。

按照上述的三个组成部分,在我们实际的业务开发中,按照这三个部分,我们将代码分为三层:

案例图片2
Cotroller:接收前端的请求,对请求进行处理,并且响应数据。
Service:具体的业务逻辑。
Dao:负责数据的访问操作,包括数据的增、删、改、查等。

//UserController 
//接收前端发送的数据请求,并响应数据
@RestController
public class UserController {

    private UserServiceA userService = new UserServiceA();
    
    @RequestMapping("/listUser")
    public Result listUser() throws Exception {
        // 调用service, 获取数据
        List<User> userList = userService.listUser();
        // 响应数据
        return Result.success(userList);
    }

}
//UserServiceA
//处理具体的业务逻辑
public class UserServiceA {

    private UserDaoA userDao = new UserDaoA();

    public List<User> listUser() throws Exception {
        //调用 dao 层, 查询数据
        List<User> userList = userDao.listUser();

        //2. 对数据进行逻辑处理 - 对地址 address 中的 province 属性后, 添加上 "省/市"
        for (User user : userList) {
            Address address = user.getAddress();
            address.setProvince(address.getProvince()+" 省/市");
            address.setCity(address.getCity()+" 市/区");

            user.setAddress(address);
        }
        return userList;
    }

}

//UserDao
//负责数据的访问操作,包括数据的增、删、改、查。
public class UserDaoA {

    public List<User> listUser() throws Exception {
        //1. 从文件中查询数据
        String file = UserController.class.getClassLoader().getResource("user.xml").getFile();
        List<User> userList = XmlParserUtils.parse(file);
        System.out.println(userList);

        return userList;
    }

}

二 、分层解耦

1.耦合问题
在软件开发领域涉及到的两个概念:内聚和耦合。
1、内聚:软件中各个功能模块内部的功能联系。
2、耦合:衡量软件中各个层、模块之间的依赖、关联程度。
3、我们在进行开发时要遵循软件设计原则:高内聚低耦合。

前面开发的代码,基于三层架构分为了Controller、service以及到Dao三层。在这三层中controller调用service,service调用dao。而在controller中调用service,就需要在controller中new一个service对象,而在service中调用dao,就需要在service中new一个dao对象。此时controller的代码九耦合了service,而service也就耦合了dao。
案例图片3

在软件开发领域,我们会经常听到一种设计原则:高内聚,低耦合。
高内聚:指的是一个模块中各个元素之间的联系的紧密程度,如果各个元素(语句,程序段)之间的联系程度越高,则内聚性越高,即“高内聚”。
低耦合:指的是软件中各个层、模块之间的依赖关联程度越低越好
高内聚、低耦合的目是使程序模块的可重用性、移植性大大增强。

三、解耦思路

前面的代码,在编写的时候,需要什么对象就直接new一个就可以了。但是这样层与层之间的代码就耦合了,当service层的实现层变了之后,我们还需要修改controller层的代码。
比如:当我们要使用UserServiceB,不在使用UserServiceA了,那忙此时,我们还需要修改UserController层的代码,需要将Controller中变量声明,有以及创建实例的代码都改动。
那此时,Controller与Service层的代码就是耦合的。

创作中~~~~~~~~~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值