博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java设计基本原则----单一职责原则
阅读量:4292 次
发布时间:2019-05-27

本文共 841 字,大约阅读时间需要 2 分钟。

一: 单一职责原则

单一职责原则按照表面的意思来说就是一个接口一个类一个方法只负责一个事情。

以电话接口为例:

在这里插入图片描述

public interface IPhone {     //拨通电话     public void dial(String phoneNumber);     //通话     public void chat(Object o);     //通话完毕,挂电话     public void hangup();}

当我们要使用电话功能的时间,只需要实现这个接口,就可以了。 但是现在我们有手机和电话两种通信设备了。 如果他们的拔通电话 和挂断电话的功能一样, 但是通话的功能不一样。我们这个接口就不能使用。 因为他的职责不够单一。

我们需要将接口重新设计。

在这里插入图片描述

这样我们就有连接管理接口,有了数据传输接口。

使用场景:

我们有两个通信设备,一个智能手机,一个传统的座机。 他们拔通电话,挂断电话的方法是一样的。 但是通话方法是不一样的。 手机类可以实现这两个接口,座机类也以实现这两个接口。或者一个接口。 这样两个通信设备的连接方法不一样, 我们只需要重写通信方法就可以了。

在这里插入图片描述

这个只是接口的单一原则,像我们经常用到一个方法修改用户信息 ChangeUser(SysUser user)
可以改成
在这里插入图片描述

单一原则的好处

● 类的复杂性降低,实现什么职责都有清晰明确的定义;

● 可读性提高,复杂性降低,那当然可读性提高了;

● 可维护性提高,可读性提高,那当然更容易维护了;

● 变更引起的风险降低,变更是必不可少的,如果接口的单一职责做得好,一个接口修改只对相应的实现类有影响,对其他的接口无影响,这对系统的扩展性、维护性都有非常大的帮助。

最佳实践

我们平时开发当中, 由于开发时间的原则很难做到完成的单一原则。而且对于单一职责的划分,也没有一个统一的标准。 我们建议就是要尽量做到接口和方法的单一职责。 而对于类尽量简短就好了。

欢迎加qq群交流

659772197

转载地址:http://ejkws.baihongyu.com/

你可能感兴趣的文章
SpringCloud Feign的使用方式(二)
查看>>
关于Vue-cli+ElementUI项目 打包时排除Vue和ElementUI
查看>>
Vue 路由懒加载根据根路由合并chunk块
查看>>
vue中 不更新视图 四种解决方法
查看>>
MySQL 查看执行计划
查看>>
OpenGL ES 3.0(四)图元、VBO、VAO
查看>>
OpenGL ES 3.0(五)纹理
查看>>
OpenGL ES 3.0(八)实现带水印的相机预览功能
查看>>
OpenGL ES 3.0(九)实现美颜相机功能
查看>>
FFmpeg 的介绍与使用
查看>>
Android 虚拟机简单介绍——ART、Dalvik、启动流程分析
查看>>
原理性地理解 Java 泛型中的 extends、super 及 Kotlin 的协变、逆变
查看>>
FFmpeg 是如何实现多态的?
查看>>
FFmpeg 源码分析 - avcodec_send_packet 和 avcodec_receive_frame
查看>>
FFmpeg 新旧版本编码 API 的区别
查看>>
RecyclerView 源码深入解析——绘制流程、缓存机制、动画等
查看>>
Android 面试题整理总结(一)Java 基础
查看>>
Android 面试题整理总结(二)Java 集合
查看>>
学习笔记_vnpy实战培训day02
查看>>
学习笔记_vnpy实战培训day03
查看>>