设计模式六大原则(四)接口隔离原则

导读:本篇文章讲解 设计模式六大原则(四)接口隔离原则,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

接口隔离原则(Interface Segregation Principle, ISP)是指多用多个指定的接口,而不是使用单一的总接口。客户端不应该依赖它不需要的接口。这个原则应当让我们设计接口时注意一下几点

1.一个类对一个类的依赖应该建立在最小的接口上

2.建立单一的接口,不要建立臃肿庞大的接口

3.尽量细化接口,接口中的方法尽量少(也不是越少越好,适度即可)

接口隔离原则复合我们常说的高内聚低耦合的设计思想,从而使类具有很好的可读性,可扩展性,可维护性。设计接口时要考虑业务模型,还有一些可能会有变更的地方,所以对于抽象,业务模型的理解是非常重要的。下面举个例子,写一个动物行为的抽象:

IAnimal接口:

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

Bird类实现:

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

Dog类实现:

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

从上面的例子我们可以看到,Bird根本不会swim()只能空着,Dog类也不会fly(),它们都要重写不需要的方法。接下来细化接口,针对不同的动物行为来设计接口,分别设计IEatAnimal、IFlyAnimal、ISwimAnimal接口,来看代码:

IEatAnimal接口:

public interface IEatAnimal {
    void eat();
}

IFlyAnimal接口:

public interface IFlyAnimal {
    void fly();
}

ISwimAnimal接口:

public interface ISwimAnimal {
    void swim();
}

Bird类只实现IEatAnimal和IFlyAnimal接口:

public class Bird implements IEatAnimal,IFlyAnimal{
    @Override
    public void eat() { }
    @Override
    public void fly() { }
}

Dog类只实现IEatAnimal和ISwimAnimal接口:

public class Dog implements IEatAnimal,ISwimAnimal{
    @Override
    public void eat() { }
    @Override
    public void swim() { }
}

来看两者的类图比较,还是非常清晰明了的:
在这里插入图片描述在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/68423.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!