七大设计原则之接口隔离原则应用

简介: 七大设计原则之接口隔离原则应用

1 接口隔离原则介绍

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

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

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

3、尽量细化接口,接口中的方法尽量少(不是越少越好,一定要适度)。

接口隔离原则符合我们常说的高内聚低耦合的设计思想,从而使得类具有很好的可读性、可扩展性和可维护性。我们在设计接口的时候,要多花时间去思考,要考虑业务模型,包括以后有可能发生变更的地方还要做一些预判。所以,对于抽象,对业务模型的理解是非常重要的。


2 接口隔离原则应用

下面我们来看一段代码,写一个动物行为的抽象:


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();
    }

Dog 只实现 IEatAnimal 和 ISwimAnimal 接口:

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

目录
相关文章
|
SQL 关系型数据库 MySQL
总结 vue3 的一些知识点:MySQL LIKE 子句
总结 vue3 的一些知识点:MySQL LIKE 子句
|
缓存 安全 JavaScript
技术分享:探索POST请求为何会发送两次的奥秘
【8月更文挑战第20天】在Web开发过程中,遇到POST请求被意外发送两次的情况并不罕见。这一现象不仅影响用户体验,还可能对服务器造成不必要的负担。本文将从多个维度深入剖析POST请求为何会发送两次,并分享相应的解决方案,助力开发者在日常工作中有效应对此类问题。
624 0
|
搜索推荐
想要刻录蓝光光盘吗? 快来了解最好的蓝光刻录软件!
在数字娱乐蓬勃发展的今天,追求高清震撼的视听体验已成为趋势。面对众多高清视频制作工具的选择难题,DVDFab Blu-ray Creator脱颖而出,被誉为最佳蓝光刻录软件。它不仅支持多种视频格式输入(如MP4, MKV)及高清1080p输出,还能制作个性化菜单,兼容不同输出介质(BD-R, BD-RE等)。只需几步即可完成从视频导入到成品输出的全过程,无论是家庭回忆还是专业项目都能完美呈现。
|
数据采集 算法 物联网
【算法精讲系列】阿里云百炼SFT微调实践分享
本内容为您提供了百炼平台SFT微调的实践案例,帮助您方便并快速借助模型微调定制化您自己的专属模型。
3211 14
|
前端开发 安全 应用服务中间件
前端经典面试题 | 浏览器跨域
前端经典面试题 | 浏览器跨域
|
数据采集 弹性计算 供应链
阿里云服务器付费类型如何选择?
阿里云服务器付费模式包括包年包月(适合长期稳定服务,价格优惠)、按量付费(适合短期或波动需求,按小时计费)和抢占式实例(价格低但可能被系统释放,适合无状态应用)。选择时考虑业务需求的稳定性和成本效益。
223 1
|
数据可视化 数据挖掘 人机交互
数据可视化的艺术与科学
【6月更文挑战第16天】数据可视化结合艺术与科学,融设计美学与数据分析于一体。它以视觉元素揭示数据内涵,强调设计美感、表现力与严谨的分析方法。实践中,需明确目标、选择工具,注重交互性,并持续优化,以实现信息的有效传递和理解。
|
Windows
windows系统bat批处理 打开设备管理器
windows系统bat批处理 打开设备管理器
238 1
|
JavaScript 前端开发 Java
CORS跨域问题(前后端全栈解决方式讲解)
CORS跨域问题(前后端全栈解决方式讲解)
197 0