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


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

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

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

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

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

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

    1. # 高层模块, 不依赖底层模块
    2. class Switch:
    3. # Switch 类依赖于抽象接口(即 device 参数),而不依赖于具体的实现类
    4. # 抽象不依赖于具体实现细节
    5. def __init__(self, device):
    6. self.device = device
    7. def turn_on(self):
    8. self.device.turn_on()
    9. def turn_off(self):
    10. self.device.turn_off()
    11. # 底层模块,具体的实现类
    12. class DeviceA:
    13. # 具体实现细节依赖于抽象
    14. def turn_on(self):
    15. print('device A turn on')
    16. def turn_off(self):
    17. print('device A turn off')
    18. deviceA = DeviceA()
    19. '''
    20. 通过依赖注入的方式,将具体实现类的对象(deviceA)注入到 Switch 类中,
    21. 实现高层模块和底层模块的解耦
    22. '''
    23. switch_deviceA = Switch(deviceA)
    24. switch_deviceA.turn_on()

    运行结果:

    device A turn on

  • 相关阅读:
    Python自然语言处理(NLP)库之NLTK使用详解
    【Linux】进程地址空间
    ?ASlink-Warning-Couldn‘t find library ‘mcs51‘
    vscode使用ssh连接远程Ubuntu服务器(记录)
    Python练习题:找出和为N的两个数
    Spring提供的API实现文件上传
    C++基础入门详解(二)
    数据结构题目收录(二十四)
    2款Notepad++平替工具(实用、跨平台的文本编辑器)
    Automake创建工程流程
  • 原文地址:https://blog.csdn.net/songpeiying/article/details/138195324