Interface Segregation Principle,接口隔离原则,客户端不应当被强迫依赖它不需要的接口。
接口隔离原则是从接口角度考虑的设计原则,让一簇接口职责单一,可以通过调用者的角度来判断,如果调用者只使用了一部分接口,那么就不符合接口单一原则。
下面给出一个例子:
interface ReaderWriter {
char read();
void write(char c);
}
class PaperReaderWriter implement ReaderWriter {
....
}
class ComputerReaderWriter implement ReaderWriter{
...
}
int main() {
new PaperReaderWriter().read();
new ComputerReaderWriter().read();
}
这个接口,同时定义了read和write,实际上user最后只使用了read方法,但是每个类都要实现read和write,并且从接口的角度,接口定义也不单一。应该这样定义:
interface reader {
char read();
}
interface writer {
void write(char c);
}
拆分开以后,接口职责更加单一,类实现也更加灵活。
小结
接口单一原则和单一职责原则两个原则针对的视角是不一样的,接口单一原则是针对接口设计而言的,而单一职责原则是针对类、函数、模块而言的,充分利用好这两个基本原则,使代码简洁清晰。
网友评论