关于c#:对INTERFACES的这种理解是否正确?

Is this understanding on INTERFACES correct?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Interfaces: Why can't I seem to grasp them?

我在"什么是界面"(technical、c)和"为什么存在"等方面看到了许多不同类型的答案。

今天我想问你们一个问题,低于我的理解是否正确?

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

假设类A具有删除员工工作历史数据以及删除员工技能集数据的功能。此类A具有名为Employee_ID的非空属性

现在,您将实现IDeleteWorkHistory和IDeleteSkillSet两个接口,并在类A中实现它们。

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

例如在B类中,只删除员工工作历史:ideletWorkHistory empwh=新的A级(emp_id);在B班的其他地方,你将使用EMPW,而不是A班的其他东西。

基本上,类的消费者只会使用他需要的东西,或者以其他方式与他需要的接口对话。

换句话说(键盘是你的电脑的接口),如果你想和你的电脑交谈,你不需要一个位序列器,你可以通过中断把一点一点的信息传递给CPU(不过,理想情况下,你可以这样做)。您将只使用适当的界面与您的机器进行对话。

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

请告诉我我的理解是否正确或需要修改?


接口基本上是一个契约。通过在类中实现接口,您可以说该类将提供某些方法。

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

尝试阅读http://www.4guysfromrolla.com/articles/110304-1.aspx


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

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


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

例子:列表列表需要方法来添加、搜索和删除项目,以及在特定位置获取项目。这可以变成一个接口。

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

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

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

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