当前位置: 首页 > news >正文

依赖倒转原则(DIP)

依赖倒转原则(DIP):Dependency Inversion Principle,模块之间要依赖抽象,不依赖实现,要面向接口编程,不要面向实现编程。高层次模块不应该直接依赖低层模块,这样就降低了客户端与实现模块间的耦合。

UserAction依赖了具体的UserServicelmpl

Userservicelmpl依赖了具体的UserDaolmplForMySQL

目前来说:上是依赖下的。

凡是上依赖下的,都违背了依赖倒置原则。

什么叫做符合依赖倒置原则?什么叫做遵守依赖倒置原则?

上 不再 依赖 下 了。表示符合依赖倒置原则。

依赖倒置原则的核心是什么?

倡导面向接口编程,面向抽象编程,不要面向具体编程,

例如:

1.有个“Computer”类,与它关联的有“InterCpu”和“InterMemory”类,直接面向实现类编程,实现启动电脑

2.那现在这个程序的扩展性如何呢?如果我想给电脑配备AmdCpu,该如何实现?需要在实现类中去修改,有没有更好的办法?

3.创建两个接口,“Cpu”和“Memory”接口

4.使“Computer”类关联这两个接口

5.创建“InterCpu”和“AmdCpu”类,使其实现Cpu接口;创建“InterMemory”和“AmdMemory”类,使其实现Memory接口;

6.在“Test”类中就可以实现“AmdComputer”的功能

7.之后如还需改为“HuaweiComputer”,只需添加“HuaweiCpu”和8.“HuaweiMemery”,并在测试类中做修改即可。“Computer”类不需做任何变化

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 19、网络安全合规复盘
  • 读数据湖仓01让数据可信
  • C语言进阶之泛型列表(Generic List)
  • java通过webhook给飞书发送群消息
  • 力扣 简单 876.链表的中间结点
  • 微服务-流量染色
  • Windows安装openssl开发库
  • 『功能项目』宠物的攻击巨型化【80】
  • 手机也可以更换任意IP地址吗?
  • Linux中修改MySQL密码
  • 自学网络安全(黑客技术)2024年 —90天学习计划
  • java中的动态代理
  • 驱动开发系列18 - PAGE_SHIFT 解释
  • Golang | Leetcode Golang题解之第438题找到字符串中所有字母异位词
  • 智能监控,守护绿色能源:EasyCVR在电站视频监控中心的一站式解决方案
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • co模块的前端实现
  • Linux学习笔记6-使用fdisk进行磁盘管理
  • miaov-React 最佳入门
  • Mithril.js 入门介绍
  • nodejs:开发并发布一个nodejs包
  • Spring框架之我见(三)——IOC、AOP
  • 阿里云Kubernetes容器服务上体验Knative
  • 欢迎参加第二届中国游戏开发者大会
  • ------- 计算机网络基础
  • 前嗅ForeSpider采集配置界面介绍
  • 数据仓库的几种建模方法
  • 鱼骨图 - 如何绘制?
  • 怎么将电脑中的声音录制成WAV格式
  • 《天龙八部3D》Unity技术方案揭秘
  • postgresql行列转换函数
  • (二)Kafka离线安装 - Zookeeper下载及安装
  • (二)Linux——Linux常用指令
  • (四)linux文件内容查看
  • (四)搭建容器云管理平台笔记—安装ETCD(不使用证书)
  • (原创)攻击方式学习之(4) - 拒绝服务(DOS/DDOS/DRDOS)
  • (转)关于如何学好游戏3D引擎编程的一些经验
  • (最优化理论与方法)第二章最优化所需基础知识-第三节:重要凸集举例
  • .a文件和.so文件
  • .gitignore文件使用
  • .net core webapi Startup 注入ConfigurePrimaryHttpMessageHandler
  • .NET Framework、.NET Core 、 .NET 5、.NET 6和.NET 7 和.NET8 简介及区别
  • .net 获取url的方法
  • .NET 自定义中间件 判断是否存在 AllowAnonymousAttribute 特性 来判断是否需要身份验证
  • .NET/ASP.NETMVC 深入剖析 Model元数据、HtmlHelper、自定义模板、模板的装饰者模式(二)...
  • .NET/MSBuild 中的发布路径在哪里呢?如何在扩展编译的时候修改发布路径中的文件呢?
  • [ 数据结构 - C++]红黑树RBTree
  • [<死锁专题>]
  • [100天算法】-不同路径 III(day 73)
  • [240527] 谷歌 CEO 承认 AI 编造虚假信息问题难解(此文使用 @gemini 命令二次创作)| ICQ 停止运作
  • [240903] Qwen2-VL: 更清晰地看世界 | Elasticsearch 再次拥抱开源!
  • [Android 13]Input系列--获取触摸窗口
  • [Android View] 可绘制形状 (Shape Xml)
  • [C# 基础知识系列]专题十六:Linq介绍
  • [cb]UIGrid+UIStretch的自适应