设计原则之接口隔离原则–如何通过接口隔离职责
接口隔离原则(Interface Segregation Principle) ISP
。这个原则是说客户端不应该依赖他不需要的接口。
这个原则的英文是Clients should not be forced to depend upon interfaces that they do not use
。
如何使用接口隔离原则
这里面的接口不同于我们的API接口,也不是电脑的USB接口这种,而是我们程序中使用的接口Interface
。
我们通过让程序实现不同的接口来完成不同的职责。这个原则和单一职责原则也有点类似。比如一个类既有查询功能还有修改功能。
class demo{
public function list() {
}
public function update(){
}
}
那么现在有一个类需要使用这个类的查询功能。它只需要使用查询,但是他还是可以知道这个类有修改功能,可以使用他的修改功能。另外有一个类只需要修改却同样被迫加载了查询功能。
如果我们增加两个接口。
interface list {
public function list()
}
interface update{
public function update()
}
class demo implements list, update{
public function list() {
}
public function update(){
}
}
class testList {
public function test(list $demo) {
$demo->list();
}
}
class testUpdate {
public function test(update $demo) {
$demo->update();
}
}
这样的话,我们通过接口将查询和更新分离开,查询方只依赖查询接口,只能感知到查询操作,更新方只依赖更新接口,只能感知到更新操作,不需要知道这个类其他的功能,也防止了误操作。
参考资料:
- 大话设计模式
- 极客时间设计模式之美