2008-03-17
单一职责(SRP)
关键字: oo principle 设计原则 srp single responsibility principle
Single Responsibility Principle(SRP) 单一职责,是OO原则中的基本原则之一,也是最重要的原则之一.
一个类承担一个职责的全部内容,而且只承担一个职责(Once and only once),并且要做得很好.
怎么去定义职责呢?通常我们称之为类所承担的职责,其实就是引起类变化的原因.如果一个类被两个以上的原因改变,那么就要重新审视这个类的职责,把不同的职责拆分到不同的类里面去.你可能会质疑,这是不是会产生太多的类?类的数量从来都不是个问题.唯一的可能是对代码的理解变得困难.实际上这是假像,分散的代码让你更容易关注自己应该关注的代码,不会使你陷入沼泽.
单一职责就是降低设计上的耦合,这是自然而然的事情.通常一个类太多方法,太多代码,或者太容易变化,都有可能是违反了SRP.
以简单的银行帐户为例,它的职责只包括增加余额,减少余额,获取余额的职责.而余额的增加是通过现金存入,还是转账或是其它方式,都不应该影响这个类的职责,也就是它不会因为现金存入方式发生变化而变化,也不会因为要把余额显示在不同的终端上而变化.
如果发现你的代码违反了SRP,也不要惊讶,重构代码,去除代码中的bad smell.
推荐阅读:
依赖倒置。
开闭原则。
OO设计原则。
一个类承担一个职责的全部内容,而且只承担一个职责(Once and only once),并且要做得很好.
- 每个职责都应该是独立的类,因为每个职责都是变化的中轴.
- 一个类应该只有一个原因引起变化.
- 业务规则的变化所导致的类的改变,这个类不应该被数据库,GUI或其它部分的变化强制改变.
怎么去定义职责呢?通常我们称之为类所承担的职责,其实就是引起类变化的原因.如果一个类被两个以上的原因改变,那么就要重新审视这个类的职责,把不同的职责拆分到不同的类里面去.你可能会质疑,这是不是会产生太多的类?类的数量从来都不是个问题.唯一的可能是对代码的理解变得困难.实际上这是假像,分散的代码让你更容易关注自己应该关注的代码,不会使你陷入沼泽.
单一职责就是降低设计上的耦合,这是自然而然的事情.通常一个类太多方法,太多代码,或者太容易变化,都有可能是违反了SRP.
以简单的银行帐户为例,它的职责只包括增加余额,减少余额,获取余额的职责.而余额的增加是通过现金存入,还是转账或是其它方式,都不应该影响这个类的职责,也就是它不会因为现金存入方式发生变化而变化,也不会因为要把余额显示在不同的终端上而变化.
如果发现你的代码违反了SRP,也不要惊讶,重构代码,去除代码中的bad smell.
推荐阅读:
依赖倒置。
开闭原则。
OO设计原则。
发表评论
- 浏览: 58979 次
- 性别:

- 来自: 深圳

- 详细资料
搜索本博客
最新评论
-
读<重构与模式>(Refactor ...
<重构与模式>翻译的不怎么样
-- by xly_971223 -
读<重构与模式>(Refactor ...
在读refactoring to patterns <重构>冒读过 设计模 ...
-- by leisure -
读<重构与模式>(Refactor ...
Martin Fowler 的两种有关模式的书都是经典。。。。 分析模式 企业应 ...
-- by hantsy -
读<重构与模式>(Refactor ...
qlhl2000 写道不知道《企业应用架构模式》是谁的大作? 应该是Martin ...
-- by samuelray -
读<重构与模式>(Refactor ...
不知道《企业应用架构模式》是谁的大作?
-- by qlhl2000






评论排行榜