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

转载 2013年12月04日 20:28:55

文章转载:http://blog.csdn.net/lovelion/article/details/7536542


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

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

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

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

      下面通过一个简单实例来进一步分析单一职责原则:

Sunny软件公司开发人员针对某CRMCustomer Relationship  Management,客户关系管理)系统中客户信息图形统计模块提出了如图1所示初始设计方案:

1  初始设计方案结构图

在图1中,CustomerDataChart类中的方法说明如下:getConnection()方法用于连接数据库,findCustomers()用于查询所有的客户信息,createChart()用于创建图表,displayChart()用于显示图表。

现使用单一职责原则对其进行重构。

      在图1中,CustomerDataChart类承担了太多的职责,既包含与数据库相关的方法,又包含与图表生成和显示相关的方法。如果在其他类中也需要连接数据库或者使用findCustomers()方法查询客户信息,则难以实现代码的重用。无论是修改数据库连接方式还是修改图表显示方式都需要修改该类,它不止一个引起它变化的原因,违背了单一职责原则。因此需要对该类进行拆分,使其满足单一职责原则,类CustomerDataChart可拆分为如下三个类:

      (1) DBUtil:负责连接数据库,包含数据库连接方法getConnection()

      (2) CustomerDAO:负责操作数据库中的Customer表,包含对Customer表的增删改查等方法,如findCustomers()

      (3) CustomerDataChart:负责图表的生成和显示,包含方法createChart()displayChart()

      使用单一职责原则重构后的结构如图2所示:

2  重构后的结构图

【作者:刘伟  http://blog.csdn.net/lovelion


相关文章推荐

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

来自:http://www.cnblogs.com/cbf4life/archive/2009/12/11/1622166.html 单一职责原则 1.1 我是“牛”类,我可以担任多职吗 ...
  • anyqu
  • anyqu
  • 2012年07月19日 09:42
  • 1076

面向对象的六大设计原则 (一):单一职责

学习自《Android源码设计模式解析与实战》 一、单一职责:Single Responsibility Principle,简称SRP          定义:就一个类而言,应该只专注于做一件事...

面向对象设计原则——单一职责原则

单一职责原则是最简单的面向对象设计原则,它用于控制类的粒度大小。 定义:单一职责原则(Single Responsibility Principle,SRP),一个类只负责一个功能领域中的相应职责,或...

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

单一职责原则是最简单的面向对象设计原则,它用于控制类的粒度大小。单一职责原则定义如下: 单一职责原则(Single Responsibility Principle, SRP):一个...
  • LoveLion
  • LoveLion
  • 2012年05月04日 23:57
  • 19341

面向对象设计原则(一)——单一职责原则

单一职责原则定义(Single Responsibility Principle,SRP) 一个对象应该只包含 单一的职责,并且该职责被完整地封装在一个类中。 Every  Object sho...

面向对象设计原则详解:单一职责原则

定义:就一个类而言,应该仅有一个引起它变化的原因。   就是说一个类只做一件事,只关注它必须关注的,用哲学的语言来说,就是只抓主要矛盾。如果一个类承担了太多的职责,那就意味着这个类和其它程序集,或其...

面向对象设计原则——单一职责原则(SRP)

面向对象设计原则——单一职责原则(SRP)tags:设计模式 The single responsiblity principle states that every object should ...

面向对象设计的原则--单一职责原则(SRP)

概述 职责: 是引起变化的原因如果有多于一个的动机去改变一个类,这个类就具有多于一个职责 把多个职责耦合在一起,一个的变化可能会削弱或者抑制这个类完成其他职责的能力 SRP : 对一个类而言, 应该仅...

面向对象设计原则——单一职责原则,开放-封闭原则

SRP: 单一职责原则内聚性,一个类应该只有一个发生变化的原因。每个类应该只有一个职责,当需求变化时,该变化会反映为类的职责的变化。如果一个类承担类多于一个的职责,那么引起变化的原因就会有多个,把这些...

面向对象原则--单一职责原则

单一职责原则(SRP:Single responsibility principle)又称单一功能原则,它规定一个类应该只有一个发生变化的原因。该原则由罗伯特·C·马丁(Robert C. Marti...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:面向对象设计原则之单一职责原则
举报原因:
原因补充:

(最多只允许输入30个字)