java设计模式——接口隔离原则

一、概念

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)、类图如下:
java设计模式——接口隔离原则_第1张图片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)、类图如下:
java设计模式——接口隔离原则_第2张图片

你可能感兴趣的:(java设计模式)