设计模式:依赖倒转原则(Dependency Inversion Principle,DIP)介绍

依赖倒转原则(Dependency Inversion Principle,DIP)是面向对象设计原则之一,它强调高层模块不应该依赖于底层模块,二者都应该依赖于抽象。同时,抽象不应该依赖于具体实现细节,具体实现细节应该依赖于抽象。

该原则的实现原理可以通过以下几点来说明:

  1. 抽象定义接口: 高层模块定义抽象接口或者抽象类,而不是具体的实现类。这样,高层模块就不会依赖于底层模块的具体实现细节。

  2. 底层模块实现接口: 底层模块实现抽象接口或者抽象类,从而达到高层模块和底层模块之间解耦的目的。

  3. 通过依赖注入解耦: 高层模块通过依赖注入的方式将具体实现类的对象注入到抽象接口或者抽象类中,从而实现高层模块和底层模块的解耦。

在 Python 中,实现依赖倒转原则可以通过以下方式:

# 高层模块, 不依赖底层模块
class Switch:
    # Switch 类依赖于抽象接口(即 device 参数),而不依赖于具体的实现类
    # 抽象不依赖于具体实现细节
    def __init__(self, device):
        self.device = device

    def turn_on(self):
        self.device.turn_on()

    def turn_off(self):
        self.device.turn_off()

# 底层模块,具体的实现类
class DeviceA:
    # 具体实现细节依赖于抽象
    def turn_on(self):
        print('device A turn on')

    def turn_off(self):
        print('device A turn off')

deviceA = DeviceA()

'''
通过依赖注入的方式,将具体实现类的对象(deviceA)注入到 Switch 类中,

实现高层模块和底层模块的解耦
'''
switch_deviceA = Switch(deviceA)

switch_deviceA.turn_on()

运行结果:

device A turn on

相关推荐

  1. 设计模式依赖倒转原则

    2024-04-26 08:48:04       42 阅读
  2. 设计模式-依赖倒置原则

    2024-04-26 08:48:04       36 阅读
  3. 设计模式-03 设计模式-依赖倒转原则案例分析

    2024-04-26 08:48:04       30 阅读
  4. 软件设计原则依赖倒置

    2024-04-26 08:48:04       39 阅读
  5. 软件设计原则-依赖倒置原则

    2024-04-26 08:48:04       54 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-26 08:48:04       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-26 08:48:04       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-26 08:48:04       87 阅读
  4. Python语言-面向对象

    2024-04-26 08:48:04       96 阅读

热门阅读

  1. 汽车功能安全硬件设计准则的思考

    2024-04-26 08:48:04       32 阅读
  2. UDP数据报套接字编程

    2024-04-26 08:48:04       37 阅读
  3. C/C++常用开源库总结

    2024-04-26 08:48:04       41 阅读
  4. Mac环境安装任意版本的node

    2024-04-26 08:48:04       28 阅读
  5. mysql全量备份及数据恢复实践

    2024-04-26 08:48:04       42 阅读
  6. unity中压缩文件与解压文件

    2024-04-26 08:48:04       34 阅读
  7. web3 入门记录

    2024-04-26 08:48:04       28 阅读
  8. LVS + KeepAlived实现高可用负载均衡

    2024-04-26 08:48:04       39 阅读