超详细超实用!!!AI编程之cursor编写设计模式依赖倒置原则实例(六)

云风网
云风笔记
云风知识库

一、设计模式依赖倒置原则定义

高层模块不应该依赖低层模块,两者都应该依赖其抽象;抽象不应该依赖细节,细节应该依赖抽象。其核心思想是:要面向接口编程,不要面向实现编程。

依赖倒置原则是实现开闭原则的重要途径之一,它降低了客户与实现模块之间的耦合。

细节具有多变性,而抽象层则相对稳定,因此以抽象为基础搭建起来的架构要比以细节为基础搭建起来的架构要稳定得多。这里的抽象指的是接口或者抽象类,而细节是指具体的实现类。

使用接口或者抽象类的目的是制定好规范和契约,而不去涉及任何具体的操作,把展现细节的任务交给它们的实现类去完成。

二 、原则作用

  1. 依赖倒置原则可以降低类间的耦合性。
  2. 依赖倒置原则可以提高系统的稳定性。
  3. 依赖倒置原则可以减少并行开发引起的风险。
  4. 依赖倒置原则可以提高代码的可读性和可维护性。

三、原则实现实例

依赖倒置原则的目的是通过要面向接口的编程来降低类间的耦合性,在项目中满足如下规则即可。

  1. 每个类尽量提供接口或抽象类,或者两者都具备。
  2. 变量的声明类型尽量是接口或者是抽象类。
  3. 任何类都不应该从具体类派生。
  4. 使用继承时尽量遵循里氏替换原则。
1、新建main.java空白文件,cursor输入指令

在这里插入图片描述
在这里插入图片描述

2、自动生成代码以及文件
2.1、Main.java代码如下:
public class Main {
    public static void main(String[] args) {
        Logger logger = new FileLogger("user_registration.log");
        UserService userService = new UserService(logger);

        userService.registerUser("Alice");
    }
}

2.2、定义抽象接口Logger.java代码如下:

定义一个日志记录器的抽象接口

public interface Logger {
    void log(String message);
}
2.3、实现具体的日志记录器ConsoleLogger.java代码如下:

接下来,我们实现一个具体的日志记录器,例如控制台日志记录器

public class ConsoleLogger implements Logger {
    @Override
    public void log(String message) {
        System.out.println("ConsoleLogger: " + message);
    }
}
2.4、修改用户服务以依赖于抽象接口UserService.java代码如下:
public class UserService {
    private final Logger logger;

    public UserService(Logger logger) {
        this.logger = logger;
    }

    public void registerUser(String username) {
        // 用户注册逻辑
        logger.log("User " + username + " has been registered.");
    }
}
2.5、在主程序中使用依赖注入

最后,我们在主程序中通过依赖注入来提供具体的日志记录器实现。

3、运行主程序输出

在这里插入图片描述

user_registration.log日志文件出现如下内容:

FileLogger: User Alice has been registered.

这样你就可以确认日志记录器的功能是否正常工作了。

通过这个例子,我们实现了依赖倒置原则,使得高层模块(UserService)不再依赖于低层模块(ConsoleLogger),而是依赖于抽象(Logger)。这样,如果我们以后需要更换日志记录器的实现,例如使用文件日志记录器,只需要实现新的日志记录器类并注入到UserService中即可,而不需要修改UserService的代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

niech_cn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值