设计模式原则的接口隔离原则的理解

重构前UML图

设计模式里有很多原则,今天就记录一下自己对设计模式原则的接口隔离原则的理解。

接口隔离原则

Interface Segregation Principle,即ISP。客户端不应该被迫实现一些它们用不到的接口。我们需要把胖接口分组,用多个细分的接口代替它,每个接口只服务于一个子模块,或者只提供一种功能。

案例

有一个设备事件接口DeviceEvent,里面有分别是设备开启、设备关闭、设备报警、开灯、改变温度这5个方法。Light类和Temperature类分别实现了这个接口,LightUse类依赖了Light类的turnOn()、turnOff()、turnColor()方法。TemperatureUse类依赖了Temperature类的turnOn()、turnOff()、changeTemperature()方法。

重构前UML图

重构前UML图

重构前代码

存在的问题

1.Light类实现了DeviceEvent接口的alarm()和changeTemperature()方法,但确没有具体实现逻辑,因为它不需要这两个方法。同理,Temperature类也是一样,也有两个空方法。相当于多出来的空方法是强加给他们的。

2.DeviceEvent接口职责不清晰,不能笼统的让Light类和Temperature类实现它。

3.如果现在又增加了一种声控设备,那又会影响到Light类和Temperature类。

使用接口隔离原则进行重构

重构后的UML图

重构后UML图

重构后代码

接口隔离原则的重点

1.一个类对另外一个类的依赖应该是建立在最小接口上的。不强迫接口实现类实现它们不需要的接口(出现空方法)。同时也可降低不同客户间的影响。

2.客户端程序不应该依赖它不需要的接口方法。

3.过于臃肿的接口设计是对接口的污染。

 

 

0

《设计模式原则的接口隔离原则的理解》有一个想法

发表评论

邮箱地址不会被公开。