Java设计模式常用原则解析

 更新时间:2020年05月26日 11:09:45   作者:懒惰的星期六  
这篇文章主要介绍了Java设计模式常用原则解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

1.单一职责原则 每一个类负责一个职责(一个类只有一个方法)

2.里氏替换原则 所有引用基类的地方都能透明的使用其子类的对象。

  问题来了:

  比如原来

  class A{
    fun();//完成P1功能
  }

  现在需要添加新功能

  class B extends A{//A的子类B实现了fun的功能)
    fun();完成功能为P(原来的P1功能加上新增的P2功能)
  }

  则,在子类B完成新功能P2的时候可能会导致原有功能P1发生故障

  解决办法

  当使用继承的时候,除了添加新的方法来完成新功能P2之外,尽量不要重写父类A的方法,也尽量不要重载父类A 的方法

3.依赖倒置原则(核心思想,面向接口编程)

定义:高层模块不应该以来底层模块,二者都应该依赖其抽象;抽象不应该依赖细节,细节应该依赖抽象;

问题:

  类A(高层模块)直接依赖B(低层模块)

eg:class A{
    public void fun(B b){};
  }

  现在想要把类A的依赖改为C,则必须修改类A的代码为

eg:class A{
    public void fun(C c){};
  }

  解决办法:

  类B和类C都实现接口Interface D;

  类A依赖接口D

 eg:class A{
    public void fun(D d){};
   }

  这样在使用类A的fun方法时可以这样使用fun(new B());或者fun(new C());

4.接口隔离原则

将臃肿的接口才氛围独立的几个接口,这样子类在实现该接口时就不必要实现臃肿接口的所有的抽象方法

5.迪米特法则(最少知道法则)

  降低类与类之间的耦合度,从而减少当一个类改变时对另一个类造成的影响。

  简单来说,就是一个类对自己以来的类知道的越少越好。对于被以来的类,无论逻辑多么复杂,尽可能的将逻辑封装在类的内部,对外提供一个public的方法就行了。

  更简单的定义:至于直接的朋友(称出现成员变量、方法参数、方法返回值中的类为直接朋友,出现在局部变量中的类不是直接的朋友)进行通信。

  (依赖的三种方式,方法参数,局部变量-方法内的变量,静态变量-方法中调用某个类的静态方法)

6.开闭原则

  一个软件实体类、模块、和函数应该对扩展开放,对修改关闭。

  问题:当软件升级维护时,队友俺有代码进行修改,可能会给旧代码引入错误。

  解决办法:当软件需要变化时,尽可能通过扩展软件实体的行为来实现变化,儿不是通过修改已有的代码来实现变化。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • java中为何重写equals时必须重写hashCode方法详解

    java中为何重写equals时必须重写hashCode方法详解

    这篇文章主要给大家介绍了关于java中为什么重写equals时必须重写hashCode方法的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-11-11
  • SpringBoot启动过程的实现

    SpringBoot启动过程的实现

    这篇文章主要介绍了SpringBoot启动过程的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • Swagger屏蔽某些接口显示的操作

    Swagger屏蔽某些接口显示的操作

    这篇文章主要介绍了Swagger屏蔽某些接口显示的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • Java通过反射机制将对象封装成JSON和JsonArray格式

    Java通过反射机制将对象封装成JSON和JsonArray格式

    这篇文章主要介绍了Java通过反射机制将对象封装成JSON和JsonArray格式,JAVA反射机制是在运行状态中,对于任意一个实体类,都能够知道这个类的所有属性和方法,需要的朋友可以参考下
    2023-10-10
  • java中Arrays.sort()排序方法举例详解

    java中Arrays.sort()排序方法举例详解

    这篇文章主要给大家介绍了关于java中Arrays.sort()排序方法举例详解的相关资料,Java Arrays.sort()方法对数组进行排序,通常情况下直接传入数组,默认升序排序,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-11-11
  • 从零开始使用IDEA创建SpringBoot项目(图文)

    从零开始使用IDEA创建SpringBoot项目(图文)

    这篇文章主要介绍了从零开始使用IDEA创建SpringBoot项目(图文),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-05-05
  • idea 解决用骨架创建项目过慢的操作方式

    idea 解决用骨架创建项目过慢的操作方式

    这篇文章主要介绍了idea 解决用骨架创建项目过慢的操作方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • 非常全面的Java SpringBoot点赞功能实现

    非常全面的Java SpringBoot点赞功能实现

    但是这些功能再项目中是高频出现的,如果直接操作数据库的话,对数据库压力太大。那遇到这个问题怎么解决?这篇文章主要给大家介绍了关于Java SpringBoot点赞功能实现 的相关资料,需要的朋友可以参考下
    2022-01-01
  • Springboot集成SSE实现单工通信消息推送流程详解

    Springboot集成SSE实现单工通信消息推送流程详解

    SSE简单的来说就是服务器主动向前端推送数据的一种技术,它是单向的,也就是说前端是不能向服务器发送数据的。SSE适用于消息推送,监控等只需要服务器推送数据的场景中,下面是使用Spring Boot来实现一个简单的模拟向前端推动进度数据,前端页面接受后展示进度条
    2022-11-11
  • Java中JSON字符串进行各种转换的方法小结

    Java中JSON字符串进行各种转换的方法小结

    Gson和Hutool的JSONUtil都是常用的用于处理JSON数据的工具库,它们提供了简单易用的API来进行JSON字符串的解析、转换和操作,下面就跟随小编一起学习一下如果使用他们实现JSON字符串的各种转换吧
    2024-01-01

最新评论