【读书学习记录】【设计模式】依赖倒置原则

news/2025/11/27 16:30:50/文章来源:https://www.cnblogs.com/moon-stars/p/19278489

依赖倒置原则:
1.定义:系统的高层部分不应该直接依赖于系统的底层部分,相反,他们应该依赖于某种抽象
2.优点:可以减少类间的耦合性,提高系统的稳定性,降低并行开发引起的风险,提高代码的可读性和可维护性。

3.通过代码去理解(场景-解决方式):

【场景】

namespace ConsoleApp1
{public enum Relationship{Parent,Child,Sibling}public class Person{public String Name { get; set; }}// low-levelpublic class Relationships{private List<(Person, Relationship, Person)> relations= new List<(Person, Relationship, Person)>();public void AddParentAndChild(Person parent, Person child){relations.Add((parent, Relationship.Parent, child));relations.Add((child, Relationship.Child, parent));}public List<(Person, Relationship, Person)> Relations => relations;}// high-levelpublic class Research{public Research(Relationships relationships){var relations = relationships.Relations;foreach (var r in relations.Where(x => x.Item1.Name == "John" &&x.Item2 == Relationship.Parent)){Console.WriteLine($"John has a child called {r.Item3.Name}");}}static void Main(string[] args){var parent = new Person { Name = "John" };var child1 = new Person { Name = "Chris" };var child2 = new Person { Name = "Matt" };var relationships = new Relationships();relationships.AddParentAndChild(parent, child1);relationships.AddParentAndChild(parent, child2);new Research(relationships);}}
}

 

违背了依赖倒置原则

 

【解决方式】

namespace ConsoleApp1
{public enum Relationship{Parent,Child,Sibling}public class Person{public String Name { get; set; }}public interface IRelationshipBrowser{IEnumerable<Person> FindAllChildrenOf(string name);}// low-levelpublic class Relationships: IRelationshipBrowser{private List<(Person, Relationship, Person)> relations= new List<(Person, Relationship, Person)>();public void AddParentAndChild(Person parent, Person child){relations.Add((parent, Relationship.Parent, child));relations.Add((child, Relationship.Child, parent));}public List<(Person, Relationship, Person)> Relations => relations;public IEnumerable<Person> FindAllChildrenOf(string name){return relations.Where(x => x.Item1.Name == "John" &&x.Item2 == Relationship.Parent).Select(r => r.Item3);}}// high-levelpublic class Research{//public Research(Relationships relationships)//{//    var relations = relationships.Relations;//    foreach (var r in relations.Where(//        x => x.Item1.Name == "John" &&//        x.Item2 == Relationship.Parent))//    {//        Console.WriteLine($"John has a child called {r.Item3.Name}");//    }//}public Research(IRelationshipBrowser browser){foreach (var p in browser.FindAllChildrenOf("John")){Console.WriteLine($"John has a child called {p.Name}");}}static void Main(string[] args){var parent = new Person { Name = "John" };var child1 = new Person { Name = "Chris" };var child2 = new Person { Name = "Matt" };var relationships = new Relationships();relationships.AddParentAndChild(parent, child1);relationships.AddParentAndChild(parent, child2);new Research(relationships);}}
}

【对比】

image

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/978649.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025年高端央国企工作服订制厂权威推荐榜单:高端工衣订制/高端工装订制/高端夏季工作服源头厂家精选

高端央国企工作服作为企业形象展示与员工职业防护的重要载体,其设计水准、工艺质量与功能性直接关系到企业文化的传达与员工满意度。随着央国企品牌形象建设要求的提升与员工对工装舒适性需求的增长,市场对高端定制、…

2025年下半年消防检测/房屋结构/承载力/房屋鉴定公司前五推荐

2025年下半年,内蒙古消防检测行业迎来新一轮发展机遇,随着消防安全法规的进一步完善和市场需求的持续增长,第三方消防检测服务机构的作用日益凸显。本文基于市场调研和用户反馈,整理出五家值得推荐的消防检测服务提…

navicat 17 安装破解教程【2025 最新版激活补丁 + 详细安装步骤​】

为什么选 Navicat 17?​ 在数据库开发与管理的场景中,一款高效、灵活且功能全面的工具能大幅降低工作复杂度 ——Navicat 17 正是为满足这一需求而生的跨平台数据库管理利器,凭借针对性优化的核心功能与突出优势,成…

杭州左工防潮:专为别墅打造的结构性防水防潮系统解决方案

在别墅装修与维护领域,地下室及墙体的防水防潮一直是业主关注的重点问题。杭州左工建材有限公司凭借多年专业技术积累,针对别墅特点研发出一套完整的结构性防水防潮系统,其中别墅防水防潮涂料的创新应用,为高端住宅…

MATLAB实现多分布拉丁超立方采样实用程序

MATLAB实现多分布拉丁超立方采样实用程序,支持多元正态分布、均匀分布和经验分布,并包含相关性控制功能:一、核心代码 function [samples, meta] = multiLHS(nSamples, nVars, distType, varargin)% 多分布拉丁超立…

2025年AI排名搜索优化GEO公司推荐:惠州惠算GEO科技优势多

在AI囚搜索成为企业品牌获客新战场的今天,惠州市惠阳区淡水街道智慧大厦周边的制造业、电商、服务业企业都在寻找优质的GEO优化服务商,希望能让品牌信息精准嵌入AI搜索结果,覆盖主流大模型,且效果可见。但市场上服…

2025年下半年内蒙古消防检测/房屋结构检测/承载力检测公司推荐

随着2025年下半年内蒙古地区消防安全监管要求的不断提升,消防检测服务行业迎来新一轮发展机遇。本文基于市场调研和用户反馈,为您推荐五家值得关注的消防检测服务公司(排名不分先后),其中内蒙古鑫质检测有限公司在…

深度变分多元信息瓶颈框架解析

本文提出了一种深度变分多元信息瓶颈的统一框架,该框架通过编码器图和解码器图平衡信息压缩与生成能力,扩展了现有变分方法并引入了新算法DVSIB,在噪声数据集上展现出优越的潜在空间表征性能。深度变分多元信息瓶颈…

哪些精华适合敏感肌修复皮肤屏障?2025敏感肌屏障修护榜

导语:敏感肌修护进入“精准屏障修复”时代 2025年,随着皮肤屏障研究的深入,消费者在探寻“哪些精华适合敏感肌修复皮肤屏障”时,愈发关注产品的成分机制、临床实证及长期安全性。皮肤科专家指出,任何修护方案若不…

07.入门篇-了解Java历史

07.入门篇-了解Java历史 ———————————————————————————————————————————————————————————————————————————无敌小马爱学习

2025年佛山储罐厂家最新推荐榜,SF储油罐、硫酸储罐、硝酸储罐、制冷储罐、聚焦产品品质与定制服务竞争力深度剖析

随着化工、能源、食品加工等行业对储存设备的需求持续增长,以及特种储罐(如防腐、制冷类)的应用场景不断拓展,企业在选择储罐设备供应商时面临诸多考量 —— 如何辨别企业生产实力、如何匹配自身行业的定制化需求、…

眼油去黑眼圈哪个牌子效果好?2025全肤质好用抗皱眼油实测:lefufu多场景适配

据《2025 秋冬眼周护理消费白皮书》统计,我国 18-50 岁人群中,因秋冬低温干燥、室内空调直吹、寒风刺激引发的「干燥紧绷 + 血管型黑眼圈 + 结构型皱纹 + 眼睑松弛 + 色素沉着加重」复合问题比例达 96%,其中 89% 的…

简易大变形二维数字图像相关方法设计

一、核心算法框架 1. 混合式位移场预测模型光流网络初值估计:采用轻量级GMA光流网络(参数量<5M)预测初始位移场,解决传统方法在大变形下的局部极小值问题 传统优化精修:基于IC-GN算法对光流结果进行亚像素级优…

springboot项目注册到nacos使用dubbo互相调用例子

环境: JDK:211.项目结构 这里hxl03是服务提供者,hxl04是服务消费者################################################hxl03服务提供者################################ 1.pom.xml文件<project xmlns="http:/…

2025年佛山市烧水油罐厂家最新推荐,花生油罐/卧式油罐/立式油罐/不锈钢食品油罐/化工油罐/食品油罐/加油站油罐//地埋式油罐/设备制造企业服务能力与产品特色分析

随着食品加工、化工储存等行业对不锈钢储罐设备的需求日益增长,企业在选择供应商时面临诸多考量——如何评估制造商的技术实力、如何匹配生产需求的设备类型、如何保障设备使用安全与寿命,成为采购决策的关键因素。为…

适合敏感肌的保湿面霜推荐:皮肤科医生权威推荐 敏感肌保湿面霜榜

导语:敏感肌护理进入"精准修护"时代 2025年,针对适合敏感肌的保湿面霜推荐的市场需求,护肤行业正从基础保湿向"屏障精准修护"演进。消费者在寻找适合敏感肌的保湿面霜推荐时,更关注产品的成分…

2025年双吸离心泵供货商权威推荐榜单:耐腐蚀离心泵/离心泵/螺旋离心泵源头厂家精选

双吸离心泵作为工业流程、市政供水、建筑消防及暖通空调系统的核心装备,其运行效率、可靠性及使用寿命直接关系到整个系统的稳定性与运营成本。随着国家节能政策的推进与基础设施投入的加大,市场对高效节能、低噪音、…

NOIP 集训 day6 杂题选讲(图论)

杂题选讲 CF173D Deputies特里尼塔利亚王国恰好拥有 n = 3k 座城市。所有城市都位于贯穿王国的特里西西比河沿岸。其中部分城市位于河流一侧,其余城市则分布于对岸。 若干城市之间建有桥梁相连。每座桥梁都连接着分…

【weblogic】协议反序列化漏洞 - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

成都冷库制冷设备螺杆机组制造厂家哪家靠谱?认准成都科斯特!

成都冷库制冷设备螺杆机组制造厂家哪家靠谱?认准成都科斯特!在冷链行业快速发展的当下,成都冷库制冷设备的品质与性能直接影响企业运营效率,而螺杆机组作为冷库制冷系统的核心部件,其制造厂家的选择至关重要。在成…