当前位置: 首页 > 后端技术 > Java

深入设计模式-接口隔离原则

时间:2023-04-02 01:23:49 Java

1.接口隔离原则介绍2.用代码演示接口隔离原则3.总结1.接口隔离原则介绍定义:客户端不应该依赖它不依赖的接口need,即一个类对应另一个类的Dependencies应该建立在最小接口之上。问题描述:假设我们有一个用户UserService。除了查询用户信息等基本操作外,还可以统计用户分布、用户登录习惯、用户性别比例、用户消费习惯等数据。如果把这些功能都放到UserService中,显然是不合理的。解决办法:正确的做法是将它们分开。UserService应该拆分成两个类,UserInfoService和UserCalculateService(用户统计服务),因为查询用户信息的controller依赖UserService时,只依赖查询用户信息的方法,查询统计时只依赖UserCalculateService的方法报告信息。2.用代码演示接口隔离原理假设我们有一个UserService:publicinterfaceUserService{//获取用户名信息publicStringgetUserName(StringuserId);//获取用户年龄信息publicIntegergetUserAge(StringuserId);//获取用户所有信息publicStringgetUserMsg(StringuserId);//统计用户年龄分布publicStringcalculateUserAgeDistribution(StringuserId);//用户消费统计publicStringcalculateUserConsumerDistribution(StringuserId);}可见接口过于臃肿,依赖这个接口的实现类,不管它对依赖它的类是否有用,这些方法必须在实现类中实现。根据接口隔离原则的设计方法,我们将接口拆分为两个接口,如下图所示:3.总结之前很多人可能认为接口隔离是单一职责,但实际上有以下区别:1)单一职责关注的是功能的单一性,而接口隔离关注的是接口依赖的隔离。2)单一职责原则的主要对象是类和方法,而接口隔离的主要对象是接口,是抽象层面的东西。采用接口隔离原则的注意事项:1)接口在一定范围内尽量小,但太小会阻碍编码,所以要遵循中庸之道。2)类的接口必须只为一个模块提供服务,尽量少暴露最多的接口。3)设计时要多思考,不断实践才能理解这个原理。