六大设计原则之单一职责原则

March 22, 2016

设计模式与设计原则

单一职责原则

单一职责原则 英文:Single Responsibility Principle 。定义: There should never be more than one reason for a class to change.应该有且仅有一个原因引起类的变更。

简单的说,一个类只负责一个职责。就像流水线上的工人,一个人只负责一道工序。就像大王派我来巡山这个小怪,它的职责就是巡山,结果由于多嘴,透露了一些信息给孙猴子,结果坏了大王的好事。

单一职责理解很好理解,但是具体实现不好实现,因为职责的界定是比较模糊的,职责分太细了,你将写出一大的类,职责分太粗了,你将写出一大的类。

在有些项目里,“人”就是一个职能单一的类,在有些项目里,“人”可以需要被细分为男人,女人,大人,小孩,好人,坏人。或者随着项目的进展,需求发生变更,本来只有普通会员这种人,现在需要多了一种人叫 VIP ,再往后,还可能出现一个黑名单里的黑人。用一个类去管理普通会员,VIP,黑人可能就不大合适了,这个时候可以考虑一下是不是把他们变成三种人。我需要给 VIP 用户特殊优惠的时候,只需要修改 VIP 这个类,我需要限制黑人单位时间下单的数量(黑人老喜欢下单不付款,老逗你完),只需要修改黑人这个类。这两个需求的变更只分别修改了两个类。如果都放在一个类里实现,两个需求都需要修改同一个类。

单一职责原则不仅适用于面向对象设计,也适用于结构化的方法或者模块,一般当出现一大坨代码的时候,就可以考虑一下有没有优化重构的可能,这也是一般程序员很自然会考虑的事情,所以也没啥好说的。

--- EOF ---

添加新评论