作为一只入坑了两年多的java程序猿,最近才真正接触到公司的项目,面对公司所使用的框架技术,真是两眼一抹黑啊,如何快速看懂现有项目的关键技术,这直接决定你是否能快速胜任手里的工作!这段时间也思考了很多;现有的后端技术真的很多,springBoot、springcloud。。。什么的,我们固然要学习了,但是如果你的思维还停留在以前学生时代写的代码,做的软件。。那你也许会很不适应公司的开发工作,学生时代做的软件大多数都是自己的一些想法,然后付诸在代码上,框架架构什么的、需求什么的。。。我好像真的没怎么思考过,就连写的代码都是一时兴起!!!现在趁着还有时间就得深入了解一下编程的思维,提升一下自己编码姿势!
      看到公司现有项目的代码,我就常常在神游,为什么要继承这个接口?为什么实现类可以这样写?为什么别人写的代码会如此简洁而且条理清晰?。。。就在我快要迷糊,甚至在怀疑是否适合走编程这条路的时候!我看到了设计模式,什么是设计模式?简单来说就是历代优秀程序员总结出来的代码经验;这相当于一本对于程序员的绝世秘籍啊!如果你是刚接触程序,目前还在学基础语法的,也就是说你还没有写过几个软件、网站的,没有自主实现过软件开发从0到1的过程的,建议你不用急着了解这些设计模式。因为乱花渐入迷人眼啊!设计模式一共有多少种呢?最经典的有23种,我现在写的就是其中一种--单一职责模式;
     单一职责模式(SRP)提出了一个程序员编写程序的标准,用“职责”或“变化原因”来衡量接口或类设计得是否优良;通俗来说在实际开发工作中应该保持一个接口只做一件事,也就是一个职责一个接口;只要做过项目,肯定要接触到用户、机构、角色管理这些模块,通常解决这些模块间的权限分配、处理事件等实际开发问题都是基于角色的访问控制,通过分配和取消角色来完成用户权限的授予和取消,使用户与权限分离。用户作为角色管理的主体,它可以是管理员,也可以是用户,管理员有多少权限呢?他可以分配权限给用户,把用户拉进黑名单(删除用户)等等,用户可以修改自己的个人信息,在管理员赋予他的权限里完成数据的查看、搜索、增加、删除等等;你也许在想这不简单,用户就是用户,管理员就是管理员,我写两个接口分开就行了嘛,用户该干嘛就干嘛,管理员,我们暂时不聊;我们说说用户这个接口该怎么写?他可以查看修改自己的用户名、密码、头像,修改数据的增删改查,那么用户类的类图是这个样子:

    认真看看,发现问题了吗?把用户相关功能都发在接口了,实现类只需调用接口就可以独立完成需要的功能了,但是用户这个接口明显有问题啊,用户的属性跟行为写在一个接口里,那就意味着这个接口要管理属性,也要管理行为。这明显是两件事啊,所以违背了单一职责模式,那么就应该分拆成两个接口,修改一下类图如下:

     是不是很简单啊?设计模式不涉及高深的代码实现,它只是让你的编程思维有一点点改变;单一职责模式的好处是降低类的复杂性,实现什么职责都有明确的定义;提高程序的可读性;单一职责模式普遍适用于接口的设计,一个接口完成一个职责,也适用方法的设计,一个方法尽量做一件事情,例如一个方法是修改用户密码的,你就不应该把这个方法放到"修改用户信息"方法中;

总结:
     接口一定要做到单一职责,类的设计尽量做到只有一个原因引起变化。

设计模式(一)--单一职责模式(衡量接口或类设计)相关推荐

  1. 李建忠设计模式之“单一职责”模式

    文章目录 装饰器模式(Decorator) 定义 动机 结构图 代码 要点 总结 桥方法模式(Bridge) 定义 动机 结构图 代码 要点 总结 在软件组件的设计中,如果责任划分的不清晰,使用继承得 ...

  2. 设计模式:单一职责原则

    1.单一职责原则的概念 Single Responsibility Principle,SRP: 一个类被改变的原因不能超过一个,也就是说,一个类只有一个职责,如果职责过多,代码就会臃肿,可读性更差, ...

  3. 围观设计模式(1)--单一职责原则(SRP,Single Responsibility Principle)

    沉寂了一个月的时间,仔细学习了下设计模式,从本篇博文开始陆续更新设计模式系列的文章,我给它起了个有意思的名字叫做:"围观"设计模式,当然围观是加引号的,我写博文分享的目的一方面是将 ...

  4. 北风设计模式课程---单一职责原则

    北风设计模式课程---单一职责原则 一.总结 一句话总结: 视频教程网上一定能找到做好笔记的博客,很大几率都不需要自己做笔记.比如北风设计模式课程,https://www.cnblogs.com/xi ...

  5. 单一职责原则和接口隔离原则区别的理解

    网上对于两者的区别众说纷纭,总是一套理论下来跟没有说一样,下面说说自己的理解:  单一职责原则: 是将某一职责的方法全放在一个接口中,这时候就会出现实现该接口的类必须实现该接口中自己用不到的方法(违背 ...

  6. 设计模式原则--单一职责原则

    单一职责原则(SRP) 定义:就一个类而言,应该仅有一个引起它变化的原因 场景: 一个公司有3类员工,分别是 主管,程序员,销售 代码: using System; using System.Coll ...

  7. 嘻哈说:设计模式之单一职责原则

    1.定义 首先呢,我们来看一下单一职责原则的定义. 就一个类而言,应该只有一个引起它变化的原因 这个说法不是很好懂,有一些抽象,不过呢,我们依旧可以尝试着理解一下. 就一个类而言,只有一个引起它变化的 ...

  8. 设计模式原则——单一职责原则

    前言   设计模式这部分我选择的书籍是一本叫做<设计模式之禅>的书,虽然内容可能不是特别友好,但是内容详尽有层次,一眼看去就可以大致了解整个结构.对于一门学问,有时候先从整体弄懂学习内容也 ...

  9. 设计模式之单一职责原则

    超前的设计或者过度的设计都不是良好的设计,很多时候我们等到代码在第一次变化的时候可以及时作出反应. What 就一个类(接口.结构体.方法等等)而言,应该仅有一个引起它变化的原因. Why 软件设计真 ...

最新文章

  1. Prolog学习:数独和八皇后问题
  2. 我想问一下为什么会开3分钟系统自动会从新启动呢?
  3. 关于python2.7的md5加密遇到的问题(TypeError: Unicode-objects must be encoded before hashing)...
  4. 12_VersionedCollapsingMergeTree,Log Engine Family(Log引擎,StripeLog引擎,TinyLog引擎)
  5. 玩转oracle 11g(11):开启归档模式
  6. 说说windows10自带浏览器Edge的好与不好
  7. iphone数据迁移到新iphone_iphone数据丢失?想要恢复iphone丢失的数据?
  8. python 在线编程 实现_Python进阶开发之网络编程,socket实现在线聊天机器人
  9. Go语言编程之面向“对象”编程篇
  10. 怎么将服务器中图片显示出来,服务器显示图片
  11. 【docker】ffmpeg本地转码三路推srs
  12. c语言象棋图片大全精美,【图片】象棋C语言【中国新象棋吧】_百度贴吧
  13. Oracle 常用查询语句
  14. windows批量修改文件权限
  15. 14期《掬水月在手,弄花香满衣》1月刊
  16. 关于医疗影像的mhd和dcm格式图像的读取和坐标转换
  17. 程序员除了代码还应该有什么
  18. maya(学习笔记)之Arnold渲染器二
  19. Es6类数组length属性和扩展方法,find(),findIndex(),fill(),copyWithin(),entries()...用法
  20. 【单镜头反光相机】影调、反差、光比、宽容度;光质(硬光、软光)、硬调、软调、高调、低调、中间调...

热门文章

  1. Wap wml开发中需要注意的地方
  2. sybase数据库配置经验交流
  3. 与访问您网站(或Blog)的朋友即时交流
  4. Java基础——枚举类的使用教程
  5. Java基础知识——Java常用类的使用
  6. 数据库-MySQL-结果集-ASORDER BY
  7. c语言找出递增子数组的长度,求给定数组的最长递增子序列(记录子序列的值)...
  8. java中thread实例_Java多线程并发执行demo代码实例
  9. 如何在openGauss 2.1.0中使用Job?
  10. 直播丨如何通过APEX实现数据库自动晨检功能