单一职责(SRP)

Single Responsibility Principle(SRP) 单一职责,是OO原则中的基本原则之一,也是最重要的原则之一.
一个类承担一个职责的全部内容,而且只承担一个职责(Once and only once),并且要做得很好.
[list]
[*]每个职责都应该是独立的类,因为每个职责都是变化的中轴.
[*]一个类应该只有一个原因引起变化.
[*]业务规则的变化所导致的类的改变,这个类不应该被数据库,GUI或其它部分的变化强制改变.
[/list]

怎么去定义职责呢?通常我们称之为类所承担的职责,其实就是引起类变化的原因.如果一个类被两个以上的原因改变,那么就要重新审视这个类的职责,把不同的职责拆分到不同的类里面去.你可能会质疑,这是不是会产生太多的类?类的数量从来都不是个问题.唯一的可能是对代码的理解变得困难.实际上这是假像,分散的代码让你更容易关注自己应该关注的代码,不会使你陷入沼泽.

单一职责就是降低设计上的耦合,这是自然而然的事情.通常一个类太多方法,太多代码,或者太容易变化,都有可能是违反了SRP.

以简单的银行帐户为例,它的职责只包括增加余额,减少余额,获取余额的职责.而余额的增加是通过现金存入,还是转账或是其它方式,都不应该影响这个类的职责,也就是它不会因为现金存入方式发生变化而变化,也不会因为要把余额显示在不同的终端上而变化.

如果发现你的代码违反了SRP,也不要惊讶,重构代码,去除代码中的bad smell.

推荐阅读:
[url=http://samuelray.iteye.com/blog/182917]依赖倒置[/url]。
[url=http://samuelray.iteye.com/blog/178463]开闭原则[/url]。
[url=http://samuelray.iteye.com/blog/170463]OO设计原则[/url]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值