SOLID - 依赖倒置原则(Dependency Inversion Principle)

SOLID - 依赖倒置原则(Dependency Inversion Principle)

Dependency Inversion Principle

定义

依赖倒置原则(Dependency Inversion Principle,DIP)是面向对象设计中的五大基本原则之一,通常缩写为SOLID中的D。DIP由Robert C. Martin提出,其核心思想是:

Depend upon abstractions, not concretions.

依赖倒置原则主要体现在以下两个方面:

  1. 高层模块不应依赖于低层模块,两者都应该依赖于抽象。
  2. 抽象不应该依赖于细节,细节应该依赖于抽象。

通过遵循依赖倒置原则,可以使得系统架构更加稳定、灵活和易于维护。

使用情境

依赖倒置原则主要应用在以下情境中:

  1. 模块化设计:在模块化设计中,通过依赖抽象,提升模块的重用性和灵活性。
  2. 插件架构:在插件架构中,不同插件通过抽象接口进行通信,实现松耦合。
  3. 依赖注入:通过依赖注入(Dependency Injection,DI)实现依赖倒置,有助于提高代码的可测试性和可维护性。

示例

以下是一个不遵循依赖倒置原则的示例:

不遵循依赖倒置原则的设计

class MySqlDatabase {
   
   
    public void connect() {
   
   
        // MySQL数据库连接逻辑
    }
}

class DataService {
   
   
    private MySqlDatabase mySqlDatabase;

    public DataService() {
   
   
        this.mySqlDatabase = new MySqlDatabase();
    }

    public void getData() {
   
   
        mySqlDatabase.connect();
        // 获取数据逻辑
    }
}

在这个设计中,DataService类直接依赖于具体的MySqlDatabase类。当需要更换数据库实现时,必须修改DataService类的代码。

遵循依赖倒置原则的设计

为了消除这种依赖,可以引入一个抽象接口:

interface Database {
   
   
    void connect();
}

class MySqlDatabase implements Database {
   
   
    public void connect() {
   
   
        // MySQL数据库连接逻辑
    }
}

class OracleDatabase implements Database {
   
   
    public void connect() {
   
   
        // Oracle数据库连接逻辑
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值