接口隔离原则的定义

什么是接口.

  1. 实例接口,比如定义了一个Person类,然后 Person p = new Pserson(); 产生一个实例,Person类就是 p 的接口
  2. 类接口,就是Java中使用 interface 定义的接口

什么是隔离

隔离要求将接口尽量细化,同时接口中的方法尽量少.

接口隔离原则的实现

比如现在有一个人,他身兼数职,是一个老师,要教书,是一个学生,要学习,类图如下:

如果有一天,他不在教书了,或者又有了新的职业,那我们还要修改调用该类的代码,更好的做法是将臃肿的接口变更为几个独立的接口

在使用时的时候通过接口调用.接口是我们设计时对外提供的契约,通过分散定义多个接口,可以预防未来变更的扩散,提高系统的灵活性和可维护性.

接口的规范约束

  1. 接口要尽量小,这是接口隔离原则的核心定义,但是"小"是有限度的,首先就是不能违背单一职责原则.
  2. 接口要高内聚,高内聚就是提高接口、类、模块的处理能力,减少对外的交互.具体就是,要求在接口中尽量少公布 public 方法,接口是对外的承诺,承诺越少对系统的开发越有利,变更的风险也就越少,同时也有利于降低成本
  3. 定制服务,定制服务就是单独为一个个体提供优良的服务,只提供访问者需要的方法
  4. 接口设计是有限度的,接口的设计粒度越小,系统越灵活.但是,灵活的同时也带来了结构的复杂化,开发难度增加,可维护性降低,所以接口设计一定要注意适度.

接口隔离原则就是对接口的定义,同时也是对类的定义,接口和类尽量使用原子接口或原子类来组装.

6大设计原则之接口隔离原则相关推荐

  1. 六大设计原则之接口隔离原则

    接口隔离原则定义 接口隔离有两种定义: Clients should not be forced to depend upon interfaces that they don't use. 客户端不 ...

  2. 软件设计原则之接口隔离原则、合成复用原则、迪米特原则

    系列文章目录 软件设计原则之单一职责原则.开闭原则 软件设计原则之里氏替换原则.依赖倒置原则 软件设计原则之接口隔离原则.合成复用原则.迪米特原则 文章目录 系列文章目录 一.接口隔离原则 什么是接口 ...

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

    目录 1 接口隔离原则介绍 2 接口隔离原则应用 1 接口隔离原则介绍 接口隔离原则(Interface Segregation Principle, ISP)是指用多个专门的接口,而不使用单一的总接 ...

  4. 面向对象的六大原则之 接口隔离原则——ISP

    ISP = Interface Segregation Principle ISP的定义如下: 1.客户端不应该依赖他不需要的接口 2.一个类对另外一个类的依赖性应该是建立在最小的接口上 3.不应当将 ...

  5. 面向对象编程原则(07)——接口隔离原则

    版权声明 本文原创作者:谷哥的小弟 作者博客地址:http://blog.csdn.net/lfdfhl 参考资料 <大话设计模式> 作者:程杰 <Java设计模式> 作者:刘 ...

  6. 单一职责原则和接口隔离原则区别的理解

    网上对于两者的区别众说纷纭,总是一套理论下来跟没有说一样,下面说说自己的理解:  单一职责原则: 是将某一职责的方法全放在一个接口中,这时候就会出现实现该接口的类必须实现该接口中自己用不到的方法(违背 ...

  7. Java设计模式之设计的6大原则(开闭原则,里氏代换原则,依赖倒转原则,接口隔离原则,最少知道原则,合成复用原则)

    1. 开闭原则 核心思想:一个对象对外扩展开发,对修改关闭 意思就是:对类的改动是通过增加代码进行的,而不是修改现有的代码. 也就是说软件开发人员一旦写出了可以运行的代码,就不应该去改动它,而是要保证 ...

  8. 面向对象设计原则之接口隔离原则

    接口隔离原则定义如下: 接口隔离原则(Interface  Segregation Principle, ISP):使用多个专门的接口,而不使用单一的总接口,即客户端不应该依赖那些它不需要的接口. 根 ...

  9. 【软件架构设计原则】单一职责原则和接口隔离原则

    文章目录 软件架构设计原则 单一职责原则 接口隔离原则 其他设计原则 软件架构设计原则 本文通过实例来讲解 单一职责原则 接口隔离原则 单一职责原则 单一职责(Simple Responsibilit ...

最新文章

  1. MySQL优化系列(二)--查找优化(1)(非索引设计)
  2. Android stadio litepal
  3. Redis list 之增删改查
  4. error: failed linking file resources
  5. Localization
  6. private MyAddin(System.IntPtr mdlDesc) : base(mdlDesc)这一步后就出bug
  7. Java 数组及多维数组
  8. GHOST系统锁定主页常用软件及解决方案
  9. Node.js入门 - 永恒的Hello World!
  10. python展开list嵌套,并解决from compiler.ast import flatten报错ModuleNotFoundError: No module named ‘compiler‘
  11. IOT(21)---:云、大数据、IOT深度融合 云计算进入3.0时代
  12. php装箱,PHP实现的装箱算法示例
  13. 比赛评分公开展示系统_[评委计分系统v3-双屏标准版]与[评委计分系统v3-双屏专业版]的差异
  14. 依赖注入框架 ----Dagger2 使用详解及源码分析
  15. 读完这100篇论文 就能成大数据高手
  16. oracle升序和降序同时存在,oracle升序排序 oracle升序和降序
  17. Java使用腾讯企业邮箱发邮件的例子
  18. 最优化理论极简入门(第一部分):最优化条件和KKT条件
  19. 刚开始做软件测试,一般工资范围是多少?
  20. js如何实现四舍五入 Math.round()

热门文章

  1. 动手学CV-目标检测入门教程2:VOC数据集
  2. Go Concurrency Patterns: Pipelines and cancellation
  3. java后端获取客户端(用户)真实ip,原理
  4. linux离线安装redmine_Feem:免流量跨平台文件传输工具,支持离线分享
  5. win10子系统ubuntu图形界面_win10系统中安装ubuntu子系统及图形界面
  6. Android如何分析native代码,使用android-ndk-profiler对native代码进行性能分析
  7. 小程序使用css变量,小程序使用css变量实现“换肤”方案
  8. python echo命令_如何用Python调用外部命令
  9. 关于python类_python中类的总结
  10. linux 禁用smb服务,Samba 4.11 发布,更好的可扩展性与默认禁用SMB1