这种对界面的理解正确吗

本文关键字:界面 | 更新日期: 2023-09-27 18:28:43

可能重复:
接口:为什么可以';我好像抓不住了吗?

我已经看到了很多不同类型的答案,关于什么是接口(technical,c#),为什么会有接口等等

今天我想问大家一个问题,下面我的理解是否正确?

当您希望使用者类(比如类B、C、D、E)出于某种原因(原因是接口名称)使用类A时,您将在类A上实现接口。

比方说,类A具有删除员工工作历史数据的功能,也可以删除员工技能集数据。该类A具有名为Employee_Id 的非null属性

现在您将实现两个接口IDeleteWorkHistroy和IDeleteKillSet,并在A类中实现它们

所有消费类B、C、D。。。将只通过这两个接口与您的类对话,并且它们不会在应用程序中的任何位置直接使用类A的实例

例如。在类B中,只想删除员工工作历史:IDeleteWorkhistory EmpWH=新的A类(emp_id);在B类的其他地方,你会使用EmpWH,而不是A类的其他地方。

基本上,类的使用者将只使用他需要的东西,或者使用者将以其他方式与他需要的接口交谈。

换言之(键盘是电脑的接口)如果你想和电脑通话,你不需要一个比特序列器,你可以通过中断将信息一点一点地传递给CPU。。(不过,理想情况下,你可以做到)。您将只使用适当的接口与您的机器交谈。

因此,您正在编写的任何类,都要编写适当的接口,以便使用者能够以标准的方式与您的类进行对话。

请让我知道我的理解是正确的还是需要修改?

这种对界面的理解正确吗

我认为你的理解是正确的。我通常将接口视为功能的标记。一个类可能有多个功能,当您继承接口时,就像说我能够做到这一点。一些消费者可能不需要所有的功能,或者可能不需要与另一个相同的功能。

另一方面,这并不是接口的唯一用途。有时您使用它们以某种方式实现多重继承,有时用于IOC目的。但就你的情况而言,我认为你是对的。

接口基本上就是一个契约。通过在类中实现一个接口,你就意味着该类将提供某些方法。

例如,如果您创建了一个类并使用IDisposable接口,那么您的类将提供IDisposaable指定的方法,例如Dispose()。

尝试阅读此https://web.archive.org/web/20211020203222/https://www.4guysfromrolla.com/articles/110304-1.aspx

实际上,我看到的接口更像是一个"模板"。例如:您希望确保类提供某些功能。接口允许使用类的人专注于功能,而不是如何实现它。

示例:列表
列表需要添加、搜索和删除项目以及在某个位置获取项目的方法。这可以变成一个界面。

现在,接口可能有多个内部工作方式不同的实现。例如,可以有一个将列表作为数组管理的ArrayList,一个实现链表的SingleLinkedList或一个DoubleLinkedList。所有这些实现都是不同的,例如也具有不同的性能。

如果您要编写一个对列表进行排序的方法,那么您不在乎给出的是哪种类型的列表——您只需要知道实现实现了接口中声明的方法。

但是:为您编写的每个类创建一个接口是没有意义的!有时,适当的类层次结构或抽象基类就足够了。

编辑
我认为你的理解不完全正确。你说的目标应该是尽可能少地使用类的功能。虽然接口可以用于实现您所描述的内容是正确的,但在大多数情况下,给定的场景是而不是,并且不是-接口的主要目标。