首页 > 其他分享 >设计模式学习笔记——接口隔离原则

设计模式学习笔记——接口隔离原则

时间:2023-08-27 11:06:07浏览次数:32  
标签:设计模式 职责 原则 接口 接口隔离 笔记 美女 单一


定义:

1、客户端不应该依赖于它不需要的接口

2、类间的依赖关系应该建立在最小的接口上

通俗的讲,应该建立单一的接口,不要建立臃肿庞大的接口,即接口应该尽量细化,同时接口中的方法尽量少。

举例:

要成为一名美女必须具备三个条件:面貌、身材、气质,星探找美女的过程如下类图所示:

设计模式学习笔记——接口隔离原则_单一职责原则

IPrettyGirl接口中定义了三个方法,只有这三个条件都满足,才会被称作美女,在星探的抽象类中,用show()方法分别输出美女的三个条件。这样的设计对现在来说已经非常的好了,美女嘛,就应该具备这三个条件,但是我们是为了说明接口的隔离原则,假如情况发生了一下改变,随着时间的推移,我们的审美观发生了变化,美女呢,又分为两种,一种是气质型美女,一种是外表型美女,这两种美女都叫做美女,气质型美女只要具备greateTemperament()的特征就叫做美女,而外表型美女只要具备goodLooking()和niceFigure()就可以了。但是我们现有的设计却是将这三个特征合在一起才叫做美女,多少有些死板,不太灵活,而且不能很好的表达我们的审美观,也给星探对美女的划分带来一些疑惑,那么我们应该怎么做呢?嘿嘿,这就是接口隔离原则的用武之地了,来看改进之后的类图:

设计模式学习笔记——接口隔离原则_单一职责原则_02

改进之后的类图将一个接口拆成了两个接口,对接口又进行了细化,这样我们既可以识别气质型美女,又可以识别外表型美女,而且还可以两者兼有,不错吧,比较灵活了吧?

接口是我们设计时,对外提供的契约,通过分散定义多个接口,可以预防未来变更的扩散,提高系统的灵活性和可维护性。但是应用接口隔离原则时,也是有一些原则的:

1、接口要尽量小,不出现臃肿的接口,但是“小”是有限度的,小到什么程度呢?就是小到不能违背单一职责原则。

2、接口要高内聚,要求在接口中尽量少公布public方法,接口是对外的承诺,承诺越少,对系统的开发越有利,变更的风险也就越少,同时有利于降低成本。

3、通过接口来定制服务,即模块之间必然存在耦合,定制服务即只提供访问者需要的方法。


忠告:

接口不能太大也不能太小,接口粒度太小,会导致接口的数量剧增,接口粒度太大,灵活性降低,无法提供定制服务,应该根据经验和常识决定接口的粒度大小。


补充:接口隔离原则和单一职责原则的区别

两者的很相似,但是两者的审视角度是不同的,单一职责原则要求是类和接口职责单一,注重的是职责,这是业务逻辑上的划分,而接口隔离原则要求的是接口的方法尽量少。例如,一个接口中有很多方法,提供给很多模块去访问,按照单一职责原则这是允许的,因为这一个接口实现的是一个单一的职责,这个职责可以被很多模块来使用,但是却违背了接口隔离原则,因为接口隔离原则要求一个接口只服务于一个子模块或业务逻辑,这两者间怎么去取舍,就要看实际的情况了。





标签:设计模式,职责,原则,接口,接口隔离,笔记,美女,单一
From: https://blog.51cto.com/u_5173797/7251413

相关文章

  • 设计模式学习笔记——创建者模式
    这个模式也是比较难理解的,我看了《设计模式之禅》上讲解的例子,但是看完之后一头雾水,而且好乱,仍然没有理解,看了好几遍,还是没有理解,于是我又去翻开我的课本,看那上面的例子,但是结果依然。于是上网搜,搜了很多,但是都不是很理想,最终功夫不负有心人,终于找到一个我能理解,而且我认为比较合理......
  • oracle学习笔记(9)——逻辑存储结构——区
    1、区的概念:   区是由一系列连续的数据块构成的逻辑存储单元,是存储空间分配与回收的最小单位。当创建一个数据库对象时,Oracle为对象分配若干个区,以构成一个段来为对象提供初始的存储空间。当段中已分配的区都写满后,Oracle会为段分配一个新区,以容纳更多的数据。2、区的管理(1)区......
  • oracle学习笔记(13)——数据库的启动与关闭
    1、常用的服务(1)OracleServiceSID     数据库服务,这个服务会自动地启动和停止数据库。如果安装了一个数据库,它的缺省启动类型为自动。服务进程为ORACLE.EXE,参数文件initSID.ora,日志文件SIDALRT.log,控制台SVRMGRL.EXE、SQLPLUS.EXE。     注:SID-数据库标识 ......
  • oracle学习笔记(10)——逻辑存储结构——段
    段是由一个或多个扩展区组成的逻辑存储单元,数据库模式对象在逻辑上是以段来占据表空间的大小,段代表特定数据类型的数据存储结构。1、 段的类型    段分为:数据段、索引段、临时段、回滚段    1)数据段       数据段用来存储表或簇的数据,可以细分为表......
  • oracle学习笔记(14)——安全管理
        数据库的安全性主要包括两个方面的含义:一方面是防止非法用户对数据库的访问,未授权的用户不能登录数据库;另一方面是每个数据库用户都有不同的操作权限,只能进行自己权限范围内的操作。Oracle数据库的安全可以分为两类:    1)系统安全性       系统安全......
  • oracle学习笔记(12)——数据库服务器工作模式与数据字典
    1、 专用服务器工作模式    1)概念:       专用服务器模式是指Oracle为每个用户进程启动一个专门的服务器进程,该服务器进程仅为该用户进程提供服务,直到用户进程断开连接时,对应的服务器进程才终止。    2)特点:       服务器进程与客户进......
  • Horizon学习笔记
    Horizon吊炸天!之前,一直认为horizon只不过是一个面板,没啥好研究的,而且我对django又不是很熟,一直懒的看horizon,今晚硬着头皮看了下去,没想到,越看越有劲,眼睛差点跟不上我的思路了!我觉得horizon牛不在对django的运用,而是对事物高度的抽象能力:D程序的入口点在horizon/openstack_dashboar......
  • 『学习笔记』整除分块(数论分块)
    简述整除分块这个东西听起来不是很抽象,但是我理解起来的确有点抽象(可能因为我太菜了吧)。那就先放张图:其实就是颜色相同的点被分成了一块。如果序列总长度是\(n\),某一个区间左端点是\(l\),那么\(r=\lfloor\dfrac{n}{\lfloor\dfrac{n}{l}\rfloor}\rfloor\)。所以整除分......
  • 【23种设计模式】设计模式综述(开篇)
    一、设计模式概述:​设计模式(Designpattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。是一套被反复使用......
  • 【23种设计模式】单例模式(一)
    前言:单例模式是创建型模式5种中的第1种,关注对象的创建,保证一个类仅有一个实例,并且提供一个全局访问点。在软件系统中,经常有这样一些特殊的类,必须保证它们在系统中只存在一个实例,才能确保它们的逻辑正确性、以及良好的效率。如何绕过常规的构造器,提供一种机制来保证一个类只......