• 概念:指用多个专门的接口,而不使用单一的总接口,客户端不应该依赖它不需要的接口
    • 注意:
      • 一个类对另一个类的依赖应该建立在最小的接口之上
      • 建立单一接口,不要建立庞大臃肿的接口
      • 尽量细化接口,接口中的方法尽量少(适度)
    • 设计接口的时候,需要多花时间去思考,要考虑业务模型,包括对未来有可能发生变更的地方还要做的一些预判
    • 符合高内聚、低耦合的设计思想,可以使类具有很好的可读性、可扩展性和可维护性。

    事例一: 动物园

    1. public interface IAnimal{
    2. void eat();
    3. void fly();
    4. void swim();
    5. }
    1. public class Bird implements IAnimal{
    2. @Override
    3. public void eat(){}
    4. @Override
    5. public void fly(){}
    6. @Override
    7. public void swim(){}
    8. }
    1. public class Dog implements IAnimal{
    2. @Override
    3. public void eat(){}
    4. @Override
    5. public void fly(){}
    6. @Override
    7. public void swim(){}
    8. }

    改造后:

    接口隔离(Interface Segregation Principle) - 图1

    1. public interface IEatAnimal{
    2. void eat();
    3. }
    1. public interface IFlyAnimal{
    2. void fly();
    3. }
    1. public interface ISwimAnimal{
    2. void swim();
    3. }
    1. public class Dog implements ISwimAnimal,IEatAnimal{
    2. @Override
    3. public void eat(){}
    4. @Override
    5. public void swim(){}
    6. }
    1. public class Bird implements IFlyAnimal,IEatAnimal{
    2. @Override
    3. public void eat(){}
    4. @Override
    5. public void fly(){}
    6. }