关注点分离(separation of concerns,SOC)是对只与“特定概念、目标”(关注点)相关联的软件组成部分进行“标识、封装和操纵”的能力,即标识、封装和操纵关注点的能力。是处理复杂性的一个原则。由于关注点混杂在一起会导致复杂性大大增加,所以能够把不同的关注点分离开来,分别处理就是处理复杂性的一个原则,一种方法。

http://blog.csdn.net/lovelion/article/details/7536542

单一职责原则是最简单的面向对象设计原则,它用于控制类的粒度大小。单一职责原则定义如下:

单一职责原则(Single Responsibility Principle, SRP):一个类只负责一个功能领域中的相应职责,或者可以定义为:就一个类而言,应该只有一个引起它变化的原因。

 

单一职责原则告诉我们:一个类不能太“累”!在软件系统中,一个类(大到模块,小到方法)承担的职责越多,它被复用的可能性就越小,而且一个类承担的职责过多,就相当于将这些职责耦合在一起,当其中一个职责变化时,可能会影响其他职责的运作,因此要将这些职责进行分离,将不同的职责封装在不同的类中,即将不同的变化原因封装在不同的类中,如果多个职责总是同时发生改变则可将它们封装在同一类中。

单一职责原则是实现高内聚、低耦合的指导方针,它是最简单但又最难运用的原则,需要设计人员发现类的不同职责并将其分离,而发现类的多重职责需要设计人员具有较强的分析设计能力和相关实践经验。

遵守单一职责原则,将不同的职责封装到不同的类或模块中。

单一职责原则:此原则的核心就是解耦和增强内聚性。

关注点分离与单一职责相关推荐

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

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

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

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

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

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

  4. 单一职责原则(Single Responsibility Principle,SRP)

    1 简介 定义 不要存在多于一个导致类变更的原因. 特点 一个类/接口/方法只负责一项职责. 优点 降低类的复杂度.提高类的可读性,提高系统的可维护性.降低变更引起的风险. 名字容易让人望文生义,大部 ...

  5. 设计模式中遵循的原则:单一职责、开发-封闭、依赖倒转

    设计模式中遵循的原则:单一职责.开放-封闭.依赖倒转 单一职责原则 一个类而言,应该仅有一个引起它变化的原因. 如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会消弱或者抑制这 ...

  6. php 单一职责,读懂 SOLID 的「单一职责」原则

    这是理解SOLID原则中,关于单一职责原则如何帮助我们编写低耦合和高内聚的第二篇文章. 单一职责原则是什么 之前的第一篇文章阐述了依赖倒置原则(DIP)能够使我们编写的代码变得低耦合,同时具有很好的可 ...

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

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

  8. 单一职责原则(SRP)

    单一职责原则(Single Pesponsibility Principle, SRP) 单一职责有两个含义: 一个是避免相同的职责分散到不同的类中, 别一个是避免一个类承担太多职责 为什么要遵守SR ...

  9. 面向对象设计原则之一:单一职责原则

    单一职责原则(Single Responsibility Principle SRP) There should never be more than one reason for a class t ...

最新文章

  1. 使用jvisualvm远程监控tomcat(阿里云ECS)
  2. 纳米孔(Oxford Nanopore)测序仪的学习笔记
  3. grep+awk+sort+wc实战
  4. arch linux网络配置,关于archlinux网络的 配置
  5. 跨界会对电商行业造成什么影响
  6. django 1.8 官方文档翻译: 2-4-3 模式编辑器
  7. [SDOI2012]Longge的问题 phi运用
  8. laravel validate
  9. 终于解决华硕电脑触摸板的关闭问题
  10. android 年月日倒计时,手机日期倒计时
  11. E45: 'readonly' option is set (add ! to override)
  12. Best定理和MatrixTree定理 学习笔记
  13. chrome打开链接隐私设置错误_解决用谷歌浏览器访问https网站遇到的“隐私设置错误 您的连接不是私密连接”问题...
  14. 110.Balanced Binary Tree
  15. 量子力学奇妙之旅-算符和电子自旋
  16. CygWin、MinGw和Msys的区别
  17. 2.2.1 Nginx高性能负载均衡器
  18. 如何下载Office365离线安装程序包并手动安装?
  19. Mybatis为什么查询结果为空时返回值为NULL或空集合?
  20. 简单的说一下pinia吧

热门文章

  1. lammps案例:高熵合金FeNiCrCoCu纳米压痕模拟
  2. C++基础-01输入输出
  3. 线性代数的本质,附手打公式
  4. 国科大学习资料–模式识别--复习要点
  5. 报错Process finished with exit code -1073741571 (0xC00000FD) 程序是否可以完成
  6. Layabox引擎用HTML5还原3D端游
  7. 苏宁宣布揭晓退还两周内iPad一代购置差价
  8. 开放式WEP和共享式WEP的区别
  9. 使用开源软件vlc media player 录制桌面视频
  10. 读史的三个境界(ZZ)