C#设计模式系列:单一职责原则(Single Responsibility Principle)
  1、单一职责原则的核心思想
  一个类应该有且只有一个变化的原因。
2、为什么要引入单一职责原则
单一职责原则将不同的职责分离到单独的类,每一个职责都是一个变化的中心。当需求变化时,这个变化将通过更改职责相关的类来体现。如果一个类拥有多于一个的职责,则这些职责就耦合到在了一起,那么就会有多于一个原因来导致这个类的变化。对于某一职责的更改可能会损害类满足其他耦合职责的能力。这样职责的耦合会导致设计的脆弱,以至于当职责发生更改时产生无法预期的破坏。
在SRP中,把职责定义为变化的原因。
  3、单一职责原则的优点
  1>、可以降低类的复杂度,一个类只负责一项职责,其逻辑肯定要比负责多项职责简单的多;
  2>、提高类的可读性,提高系统的可维护性;
  3>、变更引起的风险降低,变更是必然的,如果单一职责原则遵守的好,当修改一个功能时,可以显著降低对其他功能的影响。
  4、单一职责原则实现
  单一职责原则关键点要求接口的职责单一,从而实现该接口的类的职责单一。

  5、单一职责原则重构
  业务规则和持久化两个职责应该分开,业务规则往往会频繁变化,而持久化的方式却不会如此频繁的变化,并且变化的原因也是完全不同的。
对于违反这一原则的类需要进行重构,应用Façade模式或Proxy模式分离职责。
  6、使用单一职责原则的注意点
  1>、单一职责最难划分的就是职责。
  2>、单一职责原则提出了一个编写程序的标准,用职责和变化原因来衡量接口或类设计的是否优良,但是职责和变化原因都是不可度量的,因项目而异,因环境而异。
  3>、接口一定要做到单一职责,类的设计尽量做到只有一个原因引起变化。
C#设计模式系列:单一职责原则(Single Responsibility Principle)的更多相关文章
- 面象对象设计原则之一:单一职责原则(Single Responsibility Principle, SRP)
		
单一职责原则是最简单的面向对象设计原则,它用于控制类的粒度大小.单一职责原则定义如下:单一职责原则(Single Responsibility Principle, SRP):一个类只负责一个功能领域 ...
 - 设计模式六大原则(一):单一职责原则(Single Responsibility Principle)
		
单一职责(SRP)定义: 不要存在多于一个导致类变更的原因,通俗的说,即一个类只负责一项职责. 问题由来: 类T负责两个不同的职责:职责P1,职责P2.当由于职责P1需求发生改变而需要修改类T时,有可 ...
 - 单一职责原则(Single Responsibility Principle,SRP)
		
定义:不要存在多于一个导致类变更的原因.通俗的说,即一个类只负责一项职责. 问题由来:类T负责两个不同的职责:职责P1,职责P2.当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的 ...
 - 01-01.单一职责原则(Single Responsibility)
		
1.基本介绍 对于类来说的,就是一个类,应该只负责一项职责(一个类只管一件事). 如类A负责两个不同职责:职责1,职责2. 当职责1需求变更而改变A时,可能造成职责2执行错误,所以需要将类A的粒度分解 ...
 - 【设计模式】单一职责原则(SRP)
		
单一职责原则是面向对象原则五大原则中最简单,也是最重要的一个原则, 他的字面定义如下: 单一职责原则(Single Responsibility Principle, SRP): 一个类只负责一个功能 ...
 - 北风设计模式课程---单一职责原则(Single Responsibility Principle)
		
北风设计模式课程---单一职责原则(Single Responsibility Principle) 一.总结 一句话总结: 一个类应该有且只有一个变化的原因:单一职责原则(SRP:Single Re ...
 - 深入浅出系列第一篇(设计模式之单一职责原则)——从纯小白到Java开发的坎坷经历
		
各位看官大大们,晚上好.好久不见,我想死你们了... 先说说写这个系列文章的背景: 工作了这么久了,每天都忙着写业务,好久没有好好静下心来好好总结总结了.正好这段时间公司组织设计模式的分享分,所以我才 ...
 - 设计模式之单一职责原则(SRP)
		
自己之前写过一些关于设计模式的博客,但是大部分都写得比较匆忙.现在正好趁年前有时间,笔者打算好好地整理一下自己这块知识结构.开篇的第一个原则就是设计原则里面最简单的一个原则--单一职责原则. 想必大家 ...
 - 设计模式之单一职责原则(iOS开发,代码用Objective-C展示)
		
单一职责原则:就一个类而言,应该只有一个引起它变化的原因. 在iOS开发中,我们会很自然的给一个类添加各种各样的功能,比如随便写一个简单的应用程序,一般都会生成一个viewController类,于是 ...
 - JAVA设计模式之单一职责原则
		
概念: 就一个类而言应该只有一个因其他变化的原因. 流程: 问题由来:设类或接口类C负责两个不同不同的职责:职责T1,职责T2.当由于职责T1需求改变进而需要修改类C时,可能导致职责T2收到不可预知的 ...
 
随机推荐
- 2016 Multi-University Training Contest 2 D. Differencia
			
Differencia Time Limit: 10000/10000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Tot ...
 - 读取web项目properties文件路径 解决tomcat服务器找不到properties路径问题
			
1.需求:有时候我们产品经理给我们的需求是会不断变化的,例如数量是1000现在变成500,我们不可以去改代码吧,这样很麻烦,所以就可以改配置文件properties(这个数据库链接一样),当然也有js ...
 - macosx  10.11  python pip install 出现错误OSError: [Errno 1] Operation not permitted:
			
Exception: Traceback (most recent call last): File , in main status = self.run(options, args) File , ...
 - Java jvisualvm简要说明
			
jvisualvm能干什么:监控内存泄露,跟踪垃圾回收,执行时内存.cpu分析,线程分析... jvisualvm已经被集成在jdk1.6以上的版本中(不是jre).自身运行需要最低jdk1.6版本, ...
 - Poco::JSON::Array 中object 设置preserveInsertionOrder 时,stringify出错-->深入解析
			
在使用poco version 1.6.0时 Poco::JSON::Array 在object 设置preserveInsertionOrder =true 时 调用 array.stringif ...
 - Webform Application传值  ViewState
			
Application:所有的会话共享一个Application空间,任何一个人改变Application的内容,其他人都会发现被改变了.Application中的内容不会被自动释放 存放位置:服务端 ...
 - springMVC+spring+hibernate 框架整合实例
			
先说一下流程思路: 流程讲解1:首先访问会先定位到控制器.这就用到了过滤器配置文件"spring-mvc.xml".这个文件负责定义控制器的包路径.视图的格式等.其次从" ...
 - dfs判断连通图(无向)
			
在图论中,连通图基于连通的概念.在一个无向图 G 中,若从顶点vi到顶点vj有路径相连(当然从vj到vi也一定有路径),则称vi和vj是连通的.如果 G 是有向图,那么连接vi和vj的路径中所有的边都 ...
 - CSS3动画快速实现
			
在工作或者平时做demo中,经常会遇到做一些简单的动画.初级前端同学可能就会有些棘手了. 在这里我发现了一个网上笔记实用且简单易上手的动画库.与大家共享一下: 更多请查看:http://anicoll ...
 - JDBC的连接和增删改和查找
			
package Test2;import java.sql.*;import java.sql.DriverManager;import java.sql.SQLException;public cl ...