接口设计六大原则_软件接口方式有几种类型

接口设计六大原则_软件接口方式有几种类型面向对象基础设计原则:6.接口隔离原则通过对前面几个设计原则的讨论,我们会发现接口是一个好东西,因为使用接口,可以使代码灵活性和可维护性更强。但是,在设计接口时,我们还必须遵循接口隔离原则。接口隔离原则(Interface Segreg

面向对象基础设计原则:6.接口隔离原则   通过对前面几个设计原则的讨论,我们会发现接口是一个好东西,因为使用接口,可以使代码灵活性和可维护性更强。但是,在设计接口时,我们还必须遵循接口隔离原则。   接口隔离原则(Interface Segregation Principle,简称ISP)是指客户不应该依赖它们用不到的方法,只给每个客户它所需要的接口。换句话说,就是不能强迫用户去依赖那些他们不使用的接口。   接口隔离原则实际上包含了两层意思:接口的设计原则:接口的设计应该遵循最小接口原则,不要把用户不使用的方法塞进同一个接口里。如果一个接口的方法没有被使用到,则说明该接口过胖,应该将其分割成几个功能专一的接口,使用多个专门的接口比使用单一的总接口要好。接口的继承原则:如果一个接口A继承另一个接口B,则接口A相当于继承了接口B的方法,那么继承了接口B后的接口A也应该遵循上述原则:不应该包含用户不使用的方法。反之,则说明接口A被B给污染了,应该重新设计它们的关系。   如果用户被迫依赖他们不使用的接口,当接口发生改变时,他们也不得不跟着改变。换而言之,一个用户依赖了未使用但被其他用户使用的接口,当其他用户修改该接口时,依赖该接口的所有用户都将受到影响。这显然违反了开闭原则,也不是我们所期望的。   下面我们举例说明怎么设计接口或类之间的关系,使其不违反ISP原则。   假如有一个门(Door),有锁门(lock)和开锁(unlock)功能。此外,可以在门上安装一个报警器而使其具有报警(alarm)功能。用户可以选择一般的门,也可以选择具有报警功能的门。分析需求,找出其中的名词,我们不难得到三个候选类:门(Door)、普通门(CommonDoor)、有报警功能的门(AlarmDoor)。我们该如何设计这三个候选类之间的关系呢?   最简单的设计就是将Door作为接口,在Door接口里定义所有的方法,让CommonDoor和AlarmDoor作为该接口的实现类,从而强制这两个类实现Door接口中的所有方法,如下所示。但这样一来,依赖Door接口的CommonDoor却不得不实现未使用的alarm()方法。很显然,这个Door接口有点肥胖,内聚性太差,违反了接口隔离原则。
接口设计六大原则_软件接口方式有几种类型
接口设计六大原则_软件接口方式有几种类型太肥胖的接口   那么,好吧,将报警功能从Door中分离出来,封装成一个Alarm接口。在Alarm接口定义alarm()方法,在Door接口定义lock()和unlock()方法,Door接口继承Alarm接口,如下图所示。现在一个接口根据功能分成了两个接口,貌似设计要更好一些。但是,可惜的是:跟第一种方法一样,依赖Door接口的CommonDoor却不得不实现未使用的alarm()方法,也就是说接口Door被接口Alarm“污染”了,这种设计同样违反了接口隔离原则。
接口设计六大原则_软件接口方式有几种类型
接口设计六大原则_软件接口方式有几种类型接口污染   很显然,太肥胖的接口以及接口污染都会造成用户依赖于他们不用的方法,从而违反了接口隔离原则。我们不应该强迫用户依赖于他们不用的方法。那么,到底如何做才能实现这一点呢?有两种方式:通过多重继承分离接口。多重继承可以有两个方式,第一种方式是同时实现两个接口,属于多重接口继承;第二种方式是实现一个接口,同时继承一个具体类,实际上也是一种多重继承。现在我们继续本例的设计,这次我们为了避免太肥胖的接口以及接口污染,我们在Alarm接口中定义alarm()方法,在Door接口中定义lock()和unlock()方法,这两个接口之间无继承关系。CommonDoor实现Door接口。而AlarmDoor根据多重继承的实现方式,分为两种方案。第一种方案为:AlarmDoor类同时实现Door和Alarm接口,如下图所示。
接口设计六大原则_软件接口方式有几种类型
接口设计六大原则_软件接口方式有几种类型通过多重继承分离接口方式一第二种方案为:继承CommonDoor,并实现Alarm接口,如下图所示。这两种设计方案都将Door接口和Alarm接口分离了,避免了肥胖的接口和接口污染,都遵循了接口隔离原则,但是第二种方案更具有实用性。
接口设计六大原则_软件接口方式有几种类型
接口设计六大原则_软件接口方式有几种类型通过多重继承分离接口方式二通过委托分离接口。在这种方法里,AlarmDoor实现了Alarm接口,同时把功能lock和unlock委托给CommonDoor对象完成。这种设计遵循了接口隔离原则。实际上,这种方法是对第三种方法的第二个方案应用了组合/聚合复用原则,将AlarmDoor和CommonDoor的继承关系转换为聚合关系。
接口设计六大原则_软件接口方式有几种类型
接口设计六大原则_软件接口方式有几种类型通过委托分离接口   接口隔离原则从对接口的使用上,为我们对接口抽象的颗粒度建立了判断基准:在为系统设计接口的时候,使用多个专门的接口代替单一的胖接口。

2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/65501.html

(0)
上一篇 2024年 8月 27日 上午9:53
下一篇 2024年 8月 27日

相关推荐

关注微信