什么是依赖倒置原则,软件结构设计的准则包括,设计原则 依赖倒置
依赖倒置原则(DIP)是指在设计代码结构时,上级模块不应该依赖于下级模块,而两者都应该依赖于抽象。抽象不应该依赖于细节;细节应该取决于抽象。依赖倒置可以减少类之间的耦合,提高系统的稳定性,提高代码的可读性和可维护性,降低程序修改的风险。接下来,我们来看看案例。还是以课程为例。首先,创建Tom类。
class Tom { publicvidstudyjavacourse(}(system . out . println))Tom在学习Java课程);} public void study Python course(()system . out . println))汤姆正在上Python的课程);)来称呼它:
publistaticvoidmain(string[]args){ Tom Tom=new Tom);Tom . study javacourse(;Tom.studypythoncourse () Tom非常喜欢学习,目前正在学习Java和Python课程。众所周知,学习也是会上瘾的。随着学习兴趣的高涨,汤姆还是想学习AI(人工智能)课程。这时为了拓展业务,依次从下层到上层(调用层)修改代码。在Tom类中添加studyAICourse()方法,并在上层进行额外的调用。这样,系统发布后,其实是很不稳定的,在修改代码的同时还会带来意想不到的风险。然后优化代码,创建课程的抽象ICourse接口。
public interfaceicourse { void study(;() ) ) ) )。
接下来,创建JavaCourse类。
public classjavacoursementscourse { @ overridePublicVoidstudy()system . out . println) Tom正在上Java课程。重新实现PythonCourse类:
publicsclasspythongourseimplementscourse { @ overridePublicVoidstudy()system . out . println)汤姆正在上Python课程。更改Tom类:
公共课Tom { public void study(icoursescourse){ course . study;}看调用代码:
publistaticvoidmain(string[]args){ Tom Tom=new Tom);Tom . study(new javacourse));Tom . study(new python course));}现在看看代码。不管汤姆有多感兴趣,对于新课程来说,只要创建一个新的班级,通过参与传递给汤姆就可以了。不需要修改基本代码。其实这是一种大家比较熟悉的方法,叫做依赖注入。还有建造者的方式和设置者的注入方式。让我们看看如何注入发电机:
汤姆级{私人课程;public Tom(I course){ this . course=course;} public void study(){ course . study);}
检查呼叫代码:
publicstaticvoidmain(string[]args)TomTom=newTom(new javacourse));Tom . study(;}通过builder的方式注入,每次调用时创建一个实例。如果Tom是全局单实例,只能通过Setter注入并继续改变Tom类的代码。
汤姆级{私人课程;publicavoidsetcourse(icoursescourse){ this . course=course;} public void study(){ course . study);}检查呼叫代码:
publistaticvoidmain(string[]args){ Tom Tom=new Tom);Tom . set course(new javacourse));Tom . study(;Tom . set course(new python course));Tom . study(;}请看最终的类图,如下图所示。
因为基于抽象的架构比基于细节的架构要稳定得多,在获得需求后,请记得编程接口,从顶层到细节设计代码结构。
本文为“汤姆弹架”原创,转载请注明出处。技术在于分享。我分享快乐!
如果这篇文章有帮助,欢迎您的关注和欣赏;有什么建议可以留言或者私信。你们的支持是我继续创作的动力。关注微信微信官方账号“汤姆弹建筑”,获取更多技术干货!
【推荐】汤姆弹架构: 30个设计图案的真实案例,挑战年薪60W不是梦想。这篇文章从《设计模式就该这样学》 年10月29日开始继续连载。请继续关注……前言设计模式3360元素可重用面向对象软件(以下简称《设计模式》)、埃里希伽马、理查德赫尔姆、拉尔夫乔布书中这四位作者常被称为"四人帮",而这本书是"四人帮",或. https://blog.csdn.net/gupaoedu _汤姆/文章/详情/121042616
汤姆(男子名)弹框架:开闭原则(开合原理,OCP)https://blog . csdn . net/gupaoedu _汤姆/文章/详情/120895316
汤姆(男子名)弹框架:单一责任(简单责任原则,SRP)https://blog . csdn . net/gupaoedu _汤姆/文章/详情/1209069
汤姆(男子名)弹体系结构:接口隔离原则(接口隔离原则,ISP)https://blog . csdn . net/gupaoedu _汤姆/文章/详情
汤姆(男子名)弹的框架:迪米特原则(德米特卢德法律)汤姆https://blog.csdn.net/gupaoedu/文章/详情/120907187
汤姆(男子名)弹框架:里希特置换原则(利斯科夫替代原理,LSP)https://blog . csdn . net/gupaoedu _汤姆/文章/详情/120999
汤姆(男子名)弹体系结构:合成复用原则(composite/aggregatereuseprinciple,CARP)https://blog . csdn . net/gupaoedu _汤姆/文章/细节