设计模式七大原则—接口隔离原则

基本介绍

一个类继承一个接口时,应当结合实际的情况“按需”实现其中的方法,不应该为了使用接口中某部分方法,而实现了接口中本不需要的方法。如果类对一个接口实现上存在“多余”的实现,那么就应当遵守“接口隔离原则”将接口中多余部分和需要部分进行隔离(拆分为多个接口)。

“接口隔离原则”从某种角度来看,实际上它是建立在另一种设计原则之上的,即“面向接口编程,而不是针对实现编程”。因为类的依赖,不在依赖于具体的类型,而是依赖于了一个抽象的接口标准,通过实现接口的类来完成某种行为。那么在此基础上也就延申出了“接口隔离原则”。

不符合“接口隔离原则”的场景

上图中有一个.Net学生类和一个Java学生类,为了学习编程需要共同继承了“StudyProgramming”(学习编程)接口,并且各自为了实现接口创建了两个实现类,分别是“StudyDotNetProgramming”和“StudyJavaProgramming”,用来学习。

我通过类图并以实际的情况来分析下,一个.Net学生为了学习.Net编程,但是购买的编程课程中不仅包含了.Net所需要的部分(数据库、C#语言、ABP框架),还包含了Java部分的技术。所以.Net学生不得不为了学习.Net部分的技术,还要学习Java部分的技术,因为这样才能学完整个编程课程,Java的学生反之也是如此。其实这种情况,在设计上就违反了“接口隔离原则”,因为类为了仅仅使用接口部分功能,而多余实现了它不需要的部分。

符合“接口隔离原则”的场景

在上面的例子中介绍说明了一个不符合“接口隔离原则”的例子,那么在本段中我们将接着上段中的情况,基于“接口隔离原则”对其进行改造。基于“接口隔离原则”的认识,我们就应当明白在一个类多余实现了接口其中的方法时,我们应当将该接口中“使用到的部分”和“多余的部分”进行隔离,也就是将该接口进行拆分,下面我们将通过绘制UML图的方式,来看看是如何拆分的。

上图中我们首先将原有的一个接口拆分成了三个接口,这三个接口都只专注某一种类型的课程。对于学生在使用接口的实现类,并未像之前例子中出现了多余的实现方法,而每个实现类继承的接口中都是对应需要的方法。

对于这样设计就遵循了“接口隔离原则”,并且在接口层面在遵循了“单一职责”,即一个类只负责一种职责。那么此时就可以做到,Java学生学习编程技术,就只用学习关于Java的部分以及通用的部分,.Net反之也是如此。

 

 VS中使用UML设计工具

在学设计模式的过程中,以及在实际的编程设计过程中,UML设计是一个必不可少的环节,这样便于我们更好的阐述自己的方案以及清晰的实现。下面以VS2022做例子,来介绍如何让通过VS工具快速实现UML图的绘制。

1.安装类设计器

a.在开始菜单打开VS安装程序

b.点击修改按钮,跳转到安装选项界面,在“工作负载”下面勾选“扩展开发”

c.点击 【单个组件】——> 找到 【代码工具】——>勾选 【类设计器】

 

d.点击右下角修改

 

2.添加UML类图

a.右键项目——> 添加 ——> 新建项——“常规”

b.此时,可通过工具箱或单独拖拽类文件进行绘制

 

 

 

posted @ 2022-04-29 12:25  姜承轩  阅读(279)  评论(0编辑  收藏  举报