设计模式总共有六大基本原则,统称为SOLID (稳定)原则,分别是S-单一职责原则(Single Responsibility Principle), O-开闭原则(Open closed Principle),L-里氏替换原则(Liskov Substitution Principle),L-迪米特法则(Law of Demeter),I-接口隔离原则(Interface Segregation Principle),D-依赖倒置原则(Dependence Invension Principle)。


S-单一职责原则(Single Responsibility Principle)

一、定义

  应该有且仅有一个原因引起类的变更。(There should never be more than one reason for a class to change.)

二、理解

  一个接口或类只有一个职责,它只负责干一件事,也就是只有一个原因引起它的变化。单一职责原则提出了一个编写代码的标准,用"职责"或"变化原因"来判断一个接口或类是否设计优良,但"职责"和“变化原因”都是不可度量的,因项目而异,因环境而异。

  

  如上,图1-1的IUserInfo接口包含了多个职责,职责不分明,所以可拆分成用负责户属性和负责用户行为两个职责。职责分离,当有一天需要修改负责用户属性这个职责时,并不用担心影响到用户行为这个职责,这就是单一职责的好处。

三、优缺点

  优点:

  1. 单一职责,复杂性降低

  2. 可读性提高

  3. 可维护性提高

  4. 变更的风险降低,如果一个接口的单一职责做的好,修改接口只对相应的实现类有影响,对其他接口无影响,这对系统的

      扩展性和维护性都有非常大的帮助

  缺点:

  暂无

四、 注意事项

  单一职责原则提出了一个编写程序的标准,用“职责”或“变化原因”来衡量接口或类设计是否优良,但是“职责”和“变化原因”都是不可度量的,因项目而异,因环境而异。

  对于接口,我们在设计的时候一定要做到单一,但是对于实现类就需要多方面考虑了。生搬硬套单一职责原则会引起类的剧增,给维护带来非常多的麻烦,而且过分细分类的职责,会认为的增加系统的复杂性。本来一个类可以实现的行为硬要拆分成两个类,然后再使用聚合或组合的方式耦合再一起,人为制造了系统的复杂性。

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

学习资料:

《设计模式之禅》秦小波 著

单一职责原则

转载于:https://www.cnblogs.com/timfruit/p/9306098.html

学习设计模式 - 六大基本原则之单一职责原则相关推荐

  1. 学习设计模式 - 六大基本原则之接口隔离原则

    设计模式总共有六大基本原则,统称为SOLID (稳定)原则,分别是S-单一职责原则(Single Responsibility Principle), O-开闭原则(Open closed Princ ...

  2. 学习设计模式 - 六大基本原则之开闭原则

    设计模式总共有六大基本原则,统称为SOLID (稳定)原则,分别是S-单一职责原则(Single Responsibility Principle), O-开闭原则(Open closed Princ ...

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

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

  4. 每天一学设计模式(一、单一职责原则)

    引言 本文参考以下这篇文章 https://blog.csdn.net/guorui_java/article/details/125947300 定义 单一职责原则(Single responsib ...

  5. 设计模式个人总结,单一职责原则总结

    总结经验 近期自学Unity引擎,学到了关于设计模式这一块,以前学习Java多次接触设计模式,也在应用的开发过程中频繁使用.虽然开发过程中没有特意去强调使用设计模式,但设计模式的使用总是潜移默化的,现 ...

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

    声明:本文为阅读秦小波所写的<设计模式之禅>所写小结,文章内容可能有部分引述此书. 单一职责原则(Single Responsibility Principle) 1.定义:    在接口 ...

  7. 设计模式(一)---单一职责原则

    单一职责原则:就一个类而言,应该仅有一个引起它变化的原因. 如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或抑制这个类完成其他职责的能力.这种耦合会导致脆弱的设计,当变 ...

  8. python设计模式六大原则_学习设计模式 - 六大基本原则之迪米特法则(示例代码)...

    设计模式总共有六大基本原则,统称为SOLID (稳定)原则,分别是S-单一职责原则(Single Responsibility Principle), O-开闭原则(Open closed Princ ...

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

    设计模式-单一职责原则 单一职责原则使用的是创建型模式 创建型模式 创建型模式对类进行抽象 重点,创建型模式能够将对象的创建和和对象的使用分离.即使用创建型模式能够使得对象的创建,对象的使用分离.重点 ...

最新文章

  1. MindSpore基准性能
  2. 企业搜索引擎开发之连接器connector(二十七)
  3. php数组实例,PHP数组实例总结及说明
  4. VS2017 无法使用XXX附加到应用程序
  5. Maven项目jar包依赖冲突的原因以及解决办法
  6. 山西尚呈:拼多多砍价窍门秘诀及攻略?
  7. 《彼得林奇的成功投资》一——好公司第一位,价格第二位
  8. 人体下肢表面肌电,足底压力和关节角度分析
  9. luoguP1357 花园
  10. SpringBoot开发常用技术这些你知道吗???
  11. Git的4 个阶段的撤销更改(通俗易懂)
  12. ERP“创建会计科目”的请求数据量过大报黄
  13. 网站日志分析(二)——利用Quick BI制作企业化报表分析
  14. vscode 一键生成vue代码
  15. 反射镜镀膜与波长关系
  16. 标准日期格式转化为“年月日时分秒”——padStart()补0问题
  17. 使用荷兰式拍卖模型以最优惠的价格出售您的 NFT
  18. 第三方支付下半场:强监管料将持续,下一片“蓝海”在哪儿?
  19. 【linux 绑核】CPU 绑核
  20. 南京邮电大学通信与计算机哪个好,南京邮电大学和深圳大学哪一个更好呢?都有哪些好的专业?...

热门文章

  1. 批量下载的实现及java.lang.IllegalStateException异常
  2. matcaffe的blob维度顺序
  3. WordPress插件开发: 文章同步到OSC博客插件(OscPress) (四)
  4. Apk文件破解反编译(转)
  5. ArcGIS10新功能之制作地图集
  6. BusinessObject J2EE单点登陆简单使用
  7. 转载:写给计算机专业的朋友们
  8. java 遍历file_JAVA File类(文件的遍历,创建,删除)
  9. Matlab问题汇总!
  10. python自定义函数和类并调用