长沙软件开发培训学校,高端JAVA培训机构。
报名咨询热线:0731 8871 1630

技术文章

当前位置:主页 > 行业资讯 > 技术文章 >

Java中让人遗忘了的重要知识点,7大设计原则,架构师必须掌握

 现代的人大多是比较浮躁,总喜欢追着新技术的发展趋势,大放异彩。

  经历了各种框架的学习,才发现原来,最重要的,最核心的还是基础知识。现在的牛X技术无不和Java基础知识有着千丝万缕的联系。

  首先让我们引出了个概念,判断类,接口设计的好坏,要遵循的一个终极方向是什么——高内聚,低耦合。

  想要达到这个目的就不得不提一下,软件的7大设计原则:

java学习思维导图

  1、开闭原则

  开闭原则 OCP--- Open Closed Principle

  一句话可以总结为对拓展开放,对修改关闭。

  因为需求有变化,要求我们设计程序时必须为程序功能的新增留好接口,在新增功能时,不要修改原有代码,而是新增代码,让程序实现对拓展开放,对修改关闭测设计要求。

java漫画

  Ivar Jacobson曾说过,“任何系统在其生命周期中都会发生变化。如果我们期望开发出的系统不会在第1版后就被抛弃,就必须牢牢地记住这一点。”那么怎样的设计才能面对需求的改变却可以保持相对稳定,从而使得系统可以在第一个版本以后不断推出新的版本呢?Bertrand Meyer在1988年提出了著名的开放-封闭原则(The Open-Closed Principle,简称OCP)为我们提供了指引。

  举例:

  MVC模式下,每一层都有接口,是和其他层对接的规范,新增功能时,我们可以选择新增Controller层和service层和mapper层代码 不用去修改原有代码

  2、依赖注入原则

  英文缩写:DIP(DependenceInversionPrinciple)

  依赖倒置原则的三层含义:

  1.高层模块不应该依赖低层模块,两者都应该依赖其抽象;

  2.抽象不应该依赖细节;

  3.细节应该依赖抽象。

  抽象:即抽象类或接口,两者是不能够实例化。

  细节:即具体的实现类,实现接口或者继承抽象类所产生的类,两者可以通过关键字new直接被实例化。

  举例:

  一个类组合另一个类作为属性时,应尽量选择抽象类或者是接口,尽量避免直接组合实现类

  电脑里的零件坏了,如硬盘,内存,CPU等,那么直接更换对应的配件,只要插槽一样就能互换,维护比较方便.插槽就是接口,具体的硬件就是实现类.留好接口可以随时换零件,如果零件直接焊死在电脑上,坏了就没有办法更换了

  3、里氏替换原则

  里氏代换原则是由麻省理工学院(MIT)计算机科学实验室的Liskov女士,在1987年的OOPSLA大会上发表的一篇文章《Data Abstraction and Hierarchy》里面提出来的,主要阐述了有关继承的一些原则,也就是什么时候应该使用继承,什么时候不应该使用继承,以及其中的蕴涵的原理。简单地说就是“子类必须能够替换成它们的基类,并且经过替换以后,代码还能正常工作”。

  但是如果反过来说,如果一个软件实体使用的是一个子类的话,那么它不一定能够使用基类。

  4、单一职能原则

  单一职责原则的英文名称是SingleResponsibilityPrinciple,简称是SRP

  单一职责原则的定义是:应该有且仅有一个原因引起类的变更。具体点来说就是一个类,只有一个引起它变化的原因。应该只有一个职责。该原则的思想是:系统中的每一个类都应该只有一个单独的职责,而所有类所关注的就是自身职责的完成。

  单一职责原则是面向对象设计(OOP)的最基本的原则。

java娃

  5、组合复用原则

  组合复用原则 CARP Composite Aggregate Reuse Principle

  当一个类想使用另一个类的功能时,优先使用对象的组合,而不是继承,尽量多使用组合

  合成聚合复用原则是指在一个新对象中通过组合关系使用原来已有的一些对象,使之成为新对象的一部分,通过使用已有对象的API完成已有功能的调用

  为什么要使用合成聚合,尽量不要使用继承?

  1继承破坏包装,把超类的实现细节直接暴露给子类,不利于信息的隐匿

  2如果父类发生改变,会引发一系列子类的改变,子类之间耦合度高

  3继承是一种静态功能的使用,在运行的过程中不能发生改变,聚合复用可以动态传入子类对象实现功能动态改变

java培训

  6、迪米特原则

  迪米特法则 LOD--Law of Demeter

  只与你只直接的朋友通信 ,不要和不相关的人产生大量通信,如果两个类不必彼此通信,那么两个类就不应到发生直接的相互作用,如果其中的一个类需要调用另一个类的方法的话,可以通过第三者转发这个调用,该方法用在工作、生活中的很多场合。

  迪米特法则的初衷是在于降低类之间的耦合.但是迪米特法则有可能造成一个后果就是程序中存在大量的中介类,这些中介类完全就是为了传递类间的相互调用关系,一定程度上增加了系统的复杂度

java图表

  7、接口隔离原则

  Clients should not be forced to depend on methods they do not use.
不应该强迫客户依赖于他们不用的方法。

  当用户依赖的接口方法即便只被别的用户使用而自己不用,那它也得实现这些接口,换而言之,一个用户依赖了未使用但被其他用户使用的接口,当其他用户修改该接口时,依赖该接口的所有用户都将受到影响。这显然违反了开闭原则,也不是我们所期望的。

  接口隔离原则ISP和单一职责有点类似,都是用于聚集功能职责的,实际上ISP可以被理解才具有单一职责的程序转化到一个具有公共接口的对象。

  看了这些设计原则,有没有突然豁然开朗的感觉,似乎Spring,设计模式,好多好多说不清道不明的东东都和他有关系。

  如果想学习更多的Java知识,记得关注哦。

  后面将对设计模式也做一个全面的解析,喜欢的朋友,敬请期待。

栏目导航 Navigation

热门文章 Hots

推荐内容 Recommend

咨询电话:0731 8871 1630 谢老师

咨询QQ:46549572

微信咨询:hn887700

网上报名


学校地址:湖南省长沙岳麓区麓谷大道699号(北门) 网站备案号:湘ICP备15000537号-4
>在线客服
QQ咨询
咨询电话

0731 8871 1630

谢老师

微信咨询