接口隔离原则(InterfaceSegregationPrinciple,ISP)是指使用多个专用接口代替单个通用接口,客户端不应该依赖它不需要的接口。这个原则指导我们在设计接口时要注意以下几点:(1)一个类对另一个类的依赖应该以最小的接口为准。(2)创建一个单一的界面,而不是一个庞大而臃肿的界面。(3)尽量细化接口,接口中的方法尽量少(不是越少越好,一定要适度)。接口隔离原则符合我们常说的高内聚低耦合的设计思想,可以使类具有良好的可读性、可扩展性和可维护性。我们在设计界面的时候,需要花更多的时间思考商业模式,包括对未来可能发生的变化做一些预测。因此,了解抽象和业务模型非常重要。让我们看一段抽象动物行为的代码。IAnimal接口的代码如下:publicinterfaceIAnimal{voideat();空飞();voidswim();}Bird类的代码如下:Dog类的代码如下:publicclassDogimplementsIAnimal{@Overridepublicvoideat(){}@Overridepublicvoidfly(){}@Overridevopidswim(){}}Bird的swim()方法可能只有空,而Dog的fly()方法显然不可能。这时候我们针对不同的动物行为设计不同的接口,分别设计IEatAnimal、IFlyAnimal和ISwimAnimal接口,看代码。IEatAnimal接口代码如下:publicinterfaceIEatAnimal{voideat();}IFlyAnimal接口代码如下:publicinterfaceIFlyAnimal{voidfly();}ISwimAnimal接口代码如下:publicinterfaceISwimAnimal{voidswim();}Dog只实现了IEatAnimal和ISwimAnimal接口,代码如下:}}我们来看一下两个类图的对比,如下图所示,还是很清晰的。本文为《汤姆炸弹建筑》原创,转载请注明出处。科技在于分享,我分享我的快乐!如果本文对您有帮助,请关注并点赞;有什么建议也可以留言或私信。您的支持是我坚持创作的动力。关注微信公众号“汤姆炸弹架构”,获取更多技术干货!【推荐】汤姆炸弹架构:收藏此文相当于收藏一本《设计模式》书其他设计原则汤姆炸弹架构:开闭原则(OCP)汤姆炸弹架构:单一职责(SimpleResponsibilityPrinciple,SRP)汤姆炸弹架构:Dimiter原则(LawofDemeterLoD)汤姆炸弹架构:LiskovSubstitutionPrinciple(LSP)汤姆炸弹架构:综合重用原则(Composite/AggregateReusePrinciple,CARP)
