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

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

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

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

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

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

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

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

相关推荐
charlie1145141912 小时前
精读C++20设计模式:行为型设计模式:中介者模式
c++·学习·设计模式·c++20·中介者模式
虫师c5 小时前
分布式系统设计模式:从理论到实践
微服务·设计模式·系统架构·高可用·分布式系统
半旧夜夏5 小时前
【设计模式】核心设计模式实战
java·spring boot·设计模式
ThisIsMirror7 小时前
设计模式简要介绍
设计模式
Lei活在当下12 小时前
【业务场景架构实战】7. 多代智能手表适配:Android APP 表盘编辑页的功能驱动设计
android·设计模式·架构
澄澈i14 小时前
设计模式学习[20]---桥接模式
c++·学习·设计模式·桥接模式
o0向阳而生0o16 小时前
106、23种设计模式之备忘录模式(15/23)
设计模式·备忘录模式
小猪佩奇TONY18 小时前
C++ 学习(3) ----设计模式
c++·学习·设计模式
zhulangfly1 天前
轻松理解智能体设计模式(1/6):提示链(Prompt Chaining)
设计模式·prompt chaining
da_vinci_x2 天前
2D角色动画进阶:Spine网格变形与序列帧特效的混合工作流
游戏·设计模式·设计师·photoshop·spine·游戏策划·游戏美术