💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
[TOC] # 原则 **将依赖关系倒置为依赖接口** # 具体概念 1. 上层模块不应该下层模块,他们共同依赖一个抽象(父类不能依赖子类,他们都要依赖抽象类) 2. 抽象不能依赖于具体,具体应该依赖抽象 无论使用多么先进的代码,都无法做到不需要修改代码即可达到以不变应万变的地步 # 使用 在经典的J2EE的设计中,通常把DAO层和Services层细分为接口层和实现层,然后在配置文件中进行依赖关系的配置,这是最常见的DIP应用.Spring框架就是一个很好的IOC容器,把从控制权从代码剥离到IOC容器,通过配置xml实现,根据xml设定,建立对象之间的依赖关系 但是这样设置存在一个问题,配置文件会变得越来越大,其间关系会变得越来越复杂.同样逃脱不了随着应用和业务的变化,不断修改代码(这里认为配置文件也是代码的一部分),实际开发中很少单纯的改配置文件,一般改了配置文件,代码也要改 **依赖倒置的核心原则就是要解耦.如果脱离的这个最原始的原则,那就是本末倒置** # 如何满足DIP 每个较高层次类都为他所需要的服务提供一个接口声明,较低层次类实现这个接口 每个高层类都通过该抽象接口使用服务