天天看点

软件设计原则--接口隔离原则

接口隔离原则 (Interface Segregation Principle, ISP) : 是指用多个专门的接口, 而不适用单一的总接口, 不应该依赖它不需要的接口
  • 接口细化适度, 接口中方法应该尽量少,但不是越少越好
  • 接口单一化,不要建立庞大臃肿的接口
  • 一个类对另一个类的依赖应该建立在最小接口之上
  • 接口隔离符合高内聚,低耦合.具有很好的可读性,扩展性和可维护性

设计接口时,需要多花时间思考,考虑业务模式,预判之后可能出现变更或者新的需求

所以,对于业务模型的理解是非常重要的

以动物行为进行抽象描述

public interface IAnimal {
    void swim();
    void run();
    void fly();
}
           

鸟类

public class Bird implements IAnimal {
    @Override
    public void swim() { }
    @Override
    public void run() { }
    @Override
    public void fly() { }
}
           

狗类

public class Dog implements IAnimal {
    @Override
    public void swim() { }
    @Override
    public void run() { }
    @Override
    public void fly() { }
}
           

很显然,鸟肯定是不能 “游” 的,swim方法只能空着, 狗的fly方法也是不能实现的.

针对不同动物行为设计不同的接口

飞翔接口

public interface IFlyAnimal {
   void fly();
}
           

奔跑接口

public interface IRunAnimal {
    void run();
}
           

游泳接口

public interface ISwimAnimal {
    void swim();
}
           

狗只用实现游泳和奔跑接口

public class Dog implements IRunAnimal, ISwimAnimal {
    @Override
    public void run() { }
    @Override
    public void swim() { }
}