形形色色的代码接触多了,越发意识到 面向对象 这个被人说烂却鲜有用好的概念的重要性。之前看了《大话设计模式》也只是匆匆一瞥,没有敲代码或者记博客,这次连着《Android 源码设计模式解析与实战》一起学习,总结记录下来。

设计模式流传江湖许久,据说有 23 式,而万物归宗皆有其律,这些繁杂的模式总结出来就是如下 6 大原则。

  1. 单一职责原则
  2. 开放封闭原则
  3. 里氏代换原则
  4. 依赖倒置原则
  5. 接口分离原则
  6. 迪米特原则

在氛围好、发展快的公司、部门,每项工作都有对应的人来完成,你去了就是流水线上的一部分,只要努力做好自己的工作,有需要了调下面提供的接口,写好了再把接口暴露给别人,哪怕你身体不舒服请假了,你的这块东西也很容易找到别人替换。 
然而在另外一些公司、部门,由于资金、规模或者管理的问题,往往一人顶 N 个人使,两天一需求、一周一迭代,人一累了免疫力下降,容易写 bug 不说还容易得病,结果一个员工得病了或者辞职了,这个项目就进行不下去了。

对比上述两种,一个萝卜一个坑还是优势很大的,毕竟软件开发过程就和创业公司的人力一样,会不停的有变动,一旦把鸡蛋都放到一个篮子里,容易全军覆没。

所以这时就用到了 单一职责 SRP(Single Responsibility Principle)

从名字就可以看出,单一职责强调的是接口、类、方法的“专一性”。这种“专一性”在我们编码时怎么体现呢,那就是尽可能的让你的类、方法、接口的功能原子化、简单化,举个栗子:

假设你承包了一个小区的物业,小区户主很多,每天有大量的辣鸡产生,现在需要几个人来负责收拾物业的辣鸡,打造五星级清洁物业。你参考这种情况写个物业清洁类。

物业清洁需要做的事很多,比如楼道清洁、马路清洁、垃圾箱拜访清洁、垃圾外送、定时杀毒等等。一不小心你写的类可能就是这样:

长长的类啊,看着就头疼,仔细看会发现,其中有些职责还有关联,比如保洁员的工作进行后,清运员才有垃圾可以运输,如果保洁员干一半罢工了,清运员的工作也得耽搁。看着就乱,还容易出错。

我们知道,效率最高的工作方法就是职责分清,你干你的,我干我的,只有在需要交流的时候把我需要的东西给我就行,我不用管你怎么做的。同样,代码最干净的写法就是把那些又长又复杂的类、方法都拆开,按功能、模块分成一个个小组织。然后互相留个接口就好了。这样不管你内部怎么变动,只要能给我提供功能就 ok 了。这就是单一职责的意思。

回到之前的问题,我们采用单一职责原则,把物业清洁进一步细分,分为管理、保洁、清运三部分,然后每部分要做哪些任务都列个一二三四:

这样分成三个模块类,每个类中又有不同的职责方法,看起来清爽干净。实际工作时,也不会由于脏在一起不好分离、不好更换。

工程师可以不断审视自己的代码,根据具体的业务、功能对类、方法进行拆分,这是优化代码的第一步。

如果一个类承担的责任过多,就等于把这些责任的风险也承担了过来。其中任意 一个的变化都可能对整体造成影响。应该找出变的和不变的,进行分离。

软件设计真正要做得内容之一就是发现职责,并把这些职责相分离(ASD)

《大话设计模式》

第三篇:设计模式六大原则: 一个萝卜一个坑 -- 单一职责原则相关推荐

  1. 设计模式六大原则: 一个萝卜一个坑 -- 单一职责原则

    形形色色的代码接触多了,越发意识到 面向对象 这个被人说烂却鲜有用好的概念的重要性.之前看了<大话设计模式>也只是匆匆一瞥,没有敲代码或者记博客,这次连着<Android 源码设计模 ...

  2. 设计模式 之 设计的 六大原则(1)单一职责原则

    由于这些原则性东西 属于概念东西,就不具体以代码描述了.以下是摘自网上和自己的一些理解 首先了解一些 面向对象的特性: 面向对象 有 三大基本特征:封装 ,继承, 多态. 封装: 也就是把客观事物封装 ...

  3. 设计模式的七大设计原则:其一:单一职责原则

    单一职责原则: 单一职责原则注意事项和细节: 1.降低类的复杂度,一个类只负责一项职责 2.提高类的可读性,可维护性 3.降低变更引起的风险 4.通常情况下,我们应当遵守单一职责原则,只有逻辑足够简单 ...

  4. 软件设计原则(二)单一职责原则 -Single Responsibility Principle

    SRP,Single Responsibility Principle: There should never be more than one reason for a class to chang ...

  5. 设计模式之禅(读后感悟随笔)-单一职责原则

    一直以来,自己读过的技术类书籍也不少了,但是都犯了一个毛病就是没有很好的记录下来,有些东西可能并不是平日开发中时时刻刻用到的,随着时间的延长,学过的东西慢慢也就淡忘了,刚好最近有些时间,也正打算把&l ...

  6. 设计模式 学习笔记(2)单一职责原则、开放封闭原则、依赖倒转原则

    (3)单一职责原则 单一职责原则(SRP),就一个类而言,应该仅有一个引起它变化的原因.例如,我们在写一个窗体应用程序,一般都会生成一个Form这样的类,于是我们就把各种各样的代码,像算法.数据库访问 ...

  7. 七种设计原则(二)单一职责原则

    2019独角兽企业重金招聘Python工程师标准>>> 1.定义 单一职责原则概念::规定一个类应该只有一个发生变化的原因. There should never be more t ...

  8. 五大软件设计原则学习笔记1——单一职责原则

    五大软件设计原则SOLID: 单一职责原则(Single responsibility principle,SRP) 开放封闭原则(Open–closed principle,OCP) Liskov ...

  9. 设计模式六大原则(一)----单一职责原则

    设计模式六大原则之[单一职则原则] 一.什么是单一职责原则 首先, 我们来看单一职责的定义. 单一职责原则,全称Single Responsibility Principle, 简称SRP. A cl ...

最新文章

  1. 使用moy快速开发后台管理系统(二)
  2. 前锋 php 杭州,前锋php培训
  3. 这可能是把策略模式讲的最通俗易懂得文章了!
  4. pycharm2017设置注释字体颜色
  5. java 判断题_Java面试题及解析(判断题)
  6. 鸿蒙系统出来没有,呜呼哀哉!历尽艰辛研发出鸿蒙系统,却无厂商敢用
  7. 做生意最重要的诚信呢??? | 今日最佳
  8. [COCI2017-2018#1] Plahte
  9. linux——常用指令
  10. 看完这篇你就明白,为什么说大部分企业建设数据中台都会失败?
  11. 搭建企业分支机构(单域多站点)虚拟网络之W2k3 (一) 初稿
  12. 基于SWMM及自主开发城市内涝一维二维耦合软件的复杂城市排水系统建模技术及在城市排涝、海绵城市等领域实践
  13. 福昕阅读器中批量删除注释
  14. java实习每周总结
  15. 火狐使用谷歌搜索_使Firefox快速搜索使用Google的Beta搜索键
  16. python之Srcapy框架浅谈
  17. Springboot:整合DubboProvider的配置以及Comsumer的配置
  18. java 读取 解析微软Project .mpp 文件到甘特图
  19. 2021-09-19婴儿抚触,助力宝宝健康成长
  20. Android扫描系统文件,安卓文档扫描仪

热门文章

  1. win10电脑怎么设置禁止自动安装软件?
  2. 创建全局函数mysql_MySQL系列(十):函数
  3. Lasso回归(Stata)
  4. windows下删除病毒文件
  5. 意凡社软件分享:在家网络兼职的赚钱方法有哪些?
  6. 译文:二进制序列类型 --- bytes, bytearray
  7. iOS -- 给自己的APP加上启动图
  8. 看图记设计模式【四】,创建模式系列:生成器模式
  9. UVM中Objection的作用
  10. 月份加日期前面用on还是in_英语具体时间用on还是in,英语在下午用in还是on?