[C#]什么是依赖倒置原则:依赖倒置原则的简单示例与应用解析

依赖倒置原则(Dependency Inversion Principle,DIP)是面向对象设计的一个重要原则,是SOLID五大设计原则之一。它旨在减少模块之间的依赖性,使得代码更加灵活、可扩展、可维护。依赖倒置原则有两个核心思想:

  1. 高层模块不应该依赖低层模块,二者都应该依赖于抽象。

    • 高层模块指的是那些包含应用程序核心逻辑的模块,而低层模块则是那些具体的实现细节或基础设施,如数据库访问、文件系统操作等。按照依赖倒置原则,这些模块应该通过依赖抽象(如接口或抽象类)来解耦,而不是直接依赖具体实现。
  2. 抽象不应该依赖于细节,细节应该依赖于抽象。

    • 这意味着定义应用程序行为的抽象(如接口或抽象类)不应该依赖于实现细节(如具体类),而是具体类应该依赖于这些抽象。通过这种方式,可以在不影响高层模块的情况下,替换或修改低层模块的实现。

示例 1: 发送邮件

假设我们有一个日志记录模块(Logger)和一个邮件通知模块(EmailNotifier)。传统设计可能是这样:

public class Logger {
   
   
    public void Log(string message) {
   
   
        // 写入日志文件
    }
}

public class EmailNotifier {
   
   
    private Logger logger = new Logger(); // 直接依赖于具体实现类
    public void SendEmail(string email, string message) {
   
   
        // 发送邮件
        logger.Log("Email sent to " + email);
    }
}

在这个例子中,EmailNotifier 依赖于 Logger 的具体实现。如果以后想换成数据库记录日志,而不是写入文件,就需要修改 EmailNotifier 的代码,这就导致了高层模块对低层模块的紧耦合。

为了遵循依赖倒置原则,可以这样改造:

public interface ILogger {
   
   
    void Log(string message);
}

public class FileLogger : ILogger 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

码上有潜

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

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

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

打赏作者

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

抵扣说明:

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

余额充值