读书人

单调职责

发布时间: 2012-08-29 08:40:14 作者: rapoo

单一职责

单一职责原则的英文名称是:Single Responsibility Principle,简称SRP。让一个接口做一件事情,让一个方法做一件事情。

SRP的原话解释是:There should never be more than one reason for a class to change(不应该有一个以上的理由来改变一个类).

?

单一职责的好处

类的复杂性降低,实现什么职责都有清晰明确的定义可读性高。复杂性降低,可读性当然提高了可维护性提高。可读性提高了,自然就更容易维护了变更引起的风险降低,变更是必不可少的,如果接口的单一职责做得好,一个接口修改只对相应的实现类有影响,对其他的接口无影响,这对系统的扩展性、维护性都有非常大的帮助。

举个简单的例子,

public interface UserDAO{            public boolean updateUserInfo(User user)throws Exception;}

?如上面的updateUserInfo方法,就违背了单一职责原则,笼统的方法,为什么这样说呢?一个用户的资料,多种多样。其实可以细分为updateUserName,updateUserPassword。。。等

public interface UserDAO{           public boolean updateUserName(String userName);      public boolean updateUserPassword(String pwd);}
?

类的单一职责受非常多的因素制约,纯理论地来讲,这个原则非常优秀,但是现实有现实的难处,你必须去考虑项目工期、成本、人员技术水平、硬件情况、网络情况甚至还要考虑政府政策、垄断协议等因素。

?

所以,对于单一职责原则,建议是接口一定要做到单一职责,类的设计尽量做到只有一个原因引起变化。

读书人网 >软件架构设计

热点推荐