暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

OOP七大设计原则的Python实现--接口隔离原则

稻壳编程 2019-11-28
1052

作者简介

211工程院校贵州大学管理学院硕士研究生、互联网金融行业资深DevOps研发工程师. 曾在国内多家知名互联网公司 平安科技、微众银行、顺丰科技、魅族任职. 具有多年国内一线互联网公司自动化运维平台设计与开发经验。



OOP七大设计原则的Python实现

接口隔离原则

前言:

接口(抽象类)隔离原则要求在开发过程中设计接口时,使用多个专门的接口而不要使用单一的庞大臃肿的总接口,一个类对另一个类的依赖应该是建立在最小的接口上的。要做到接口与角色一一对应,不应该让一个接口承担多个角色,同时也不应该让一个角色由多个接口承担。这样设计出的代码在应对未来可能出现的变化时,才会更具有灵活性和可拓展性。接口就是代码对外部提供的规范和契约,通过多个接口分散定义多个单一的接口可好处是可以降低耦合、可以预防和降低因需求变更而带来的代码修改和故障几率,提高了系统的灵活性、可扩展性和降低了维护成本。

 1 

定义

  • 客户端不应该依赖它不需要的接口(Clients should not be forced to depend upon interfaces that they don't use)

  • 类间的依赖关系应该建立在最小的接口上(The dependency of one class to another one should depend on the smallest possible interface)

 2 

示例代码:

抽象类ABFactory对外约定了提供原材料预处理(preProcess)、半成品加工工序流程(processA1、processA2、processB1、processB2)、产品包装(packaging)等方法。

示例代码如下:

非抽象子类FactoryA实现抽象类ABFactory,以生产产品A。

非抽象子类FactoryB实现抽象类ABFactory,以生产产品B。


以上代码中抽象类ABFactory对于类FactoryA和FactoryB来说,均不是最小接口,因为ABFactory中存在着类FactoryA和FactoryB中使用不到的方法。但是作为抽象类ABFactory的实现类FactoryA和FactoryB又不得不去实现抽象父类中自身使用不到的方法,因为抽象父类中的抽象方法在子类中是必须要重写的,这种设计显然太过于死板不够灵活。为了解决这个问题我们可以按照接口隔离原则将抽象父类ABFactory按照如下方式拆分:
示例代码:

非抽象子类FactoryA实现抽象类ABFactory,以生产产品A。

非抽象子类FactoryB实现抽象类ABFactory,以生产产品B。

综上采用了接口隔离原则与否的两组代码示例的输出结果是相同的,在采用了接口隔离原则的代码中,非抽象子类FactoryA和FactoryB中都不用实现其使用不到的方法。若以后需求发生变化时,即便更改了抽象类ABProcessA也不会对抽象类ABProcessB造成任何影响。这样设计的代码在应对未来可能发生的变化时,才更具有灵活性和可拓展性。

 3 

结束语

如果本文可以对您的工作学习带来帮助,请扫描左侧赞赏码以资鼓励作者;文章勘误请扫描右侧二维码联系作者。


文章转载自稻壳编程,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论