一、概念
1、定义:
- 用多个专门的接口,而不使用单一的总接口,客户端不应该依赖它不需要的接口。
- 一个类对一个类的依赖应该建立在最小的接口上
- 建立单一接口,不要建立庞大臃肿的接口
- 尽量细化接口,接口中的方法尽量少
- 注意适度原则,一定要适度 2、优点
- 符合我们常说的高内聚低耦合的设计思想,从而使得类具有很好的可读性、可扩展性和可维护性。
1、示例1:
- 没使用接口隔离原则。
(1)、定义一个动物的行为接口
package com.rf.rules.intefaceSegregate;
/**
* @Description: 动物的行为接口
* @Param:
* @Author: xz
* @return:
* @Date: 2020/5/4 13:18
*/
public interface IAnimalAction {
//吃
public void eat();
//飞
public void fly();
//游泳
public void swimming();
}
(2)、定义一个小狗类,实现动物行为接口。因为狗不能有飞的行为方法,因此此方法需要返回null指针。
package com.rf.rules.intefaceSegregate;
/**
* @description: 动物小狗
* @author: xiaozhi
* @create: 2020-05-04 13:19
*/
public class Dog implements IAnimalAction{
@Override
public void eat() {
}
@Override
public void fly() {
}
@Override
public void swimming() {
}
}
(3)、定义一个小鸟类,实现动物行为接口。因为小鸟不能有游泳的行为方法,因此此方法需要返回null指针。
package com.rf.rules.intefaceSegregate;
/**
* @description: 动物鸟类
* @author: xiaozhi
* @create: 2020-05-04 13:20
*/
public class Bird implements IAnimalAction {
@Override
public void eat() {
}
@Override
public void fly() {
}
@Override
public void swimming() {
}
}
(4)、类图如下: 2、示例2:
- 使用接口隔离原则。 (1)、定义一个动物吃的行为接口
package com.rf.rules.intefaceSegregate;
/**
* @Description: 定义一个动物吃的行为接口
* @Param:
* @Author: xz
* @return:
* @Date: 2020/5/4 13:26
*/
public interface IEatAnimalAction {
public void eat();
}
(2)、定义一个动物飞的行为接口
package com.rf.rules.intefaceSegregate;
/**
* @Description: 定义一个动物飞的行为接口
* @Param:
* @Author: xz
* @return:
* @Date: 2020/5/4 13:27
*/
public interface IFlyAnimalAction {
public void fly();
}
(3)、定义一个动物游泳的行为接口
package com.rf.rules.intefaceSegregate;
/**
* @Description: 定义一个动物游泳的行为接口
* @Param:
* @Author: xz
* @return:
* @Date: 2020/5/4 13:27
*/
public interface ISwimAnimalAction {
public void swimming();
}
(4)、定义一个小狗类,实现动物吃和游泳的行为接口。
package com.rf.rules.intefaceSegregate;
/**
* @description: 动物小狗
* @author: xiaozhi
* @create: 2020-05-04 13:19
*/
public class Dog implements IEatAnimalAction,ISwimAnimalAction{
@Override
public void eat() {
}
@Override
public void swimming() {
}
}
(5)、定义一个小鸟类,实现动物吃和飞的行为接口。
package com.rf.rules.intefaceSegregate;
/**
* @description: 动物鸟类
* @author: xiaozhi
* @create: 2020-05-04 13:20
*/
public class Bird implements IEatAnimalAction,IFlyAnimalAction {
@Override
public void eat() {
}
@Override
public void fly() {
}
}
(6)、类图如下: