单一职责原则,Single Resposibility Principle,简称SRP,单一职责意指:无论设计接口或者是一个类、一个方法,都应该保持职责单一,例如一个接口:
/*
维护信息接口
*/
Interface UserBiz{
public function Create(){
}
public function Update(){
}
public function Retrieve(){
}
public function Delete(){
}
}
//既然定义了接口的职责是用户行为(增删改查),就不应该用来显示用户信息
1-1
这就是简单的单一职责原则,它的定义是:有且仅有一个原因引起类的变更。
但是在实际项目中,单一原则很难去严格的执行,因为职责的定义很宽泛。例如那个经典的IPone接口(代码1-2),iPhone接口包含了两种职责,数据传输和协议管理。hang()和dail()实现的是协议管理,chat()实现数据传送。在这里dail()的变化会引起接口的变化,那么chat的变化同样会引起接口的变化,数据传送不仅有chat,还有上网的功能,所以只能进行接口拆分,把数据传送和协议管理分开,但是这样一来,接口或者类的多重加载,大大增加了程序的“重量”,人为的增加了程序的复杂性。
Interface Iphone{
public function Dail(){
}//电话接通
public function hang(){
}//电话挂起
public function chat(){
}
}
1-2
总结:使用单一职责原则的优点:
- 类的复杂性降低,实现什么职责都有明确的定义
- 可读性提高,复杂度降低
- 可维护性提高,更易于维护
- 变更的风险性降低,对系统的扩展性有很大提升
网友评论