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目的。但在你的背景下,我认为你是对的。
实际上,我看到的界面更像是一个"模板"。例如:您希望确保类提供某些功能。一个接口允许使用类的人专注于功能,而不是它的实现方式。
例子:列表列表需要方法来添加、搜索和删除项目,以及在特定位置获取项目。这可以变成一个接口。
现在,接口的多个实现可能在内部工作不同。例如,可以有一个作为数组管理列表的
如果您要编写一个对列表进行排序的方法,那么您不关心给定的是哪种类型的列表——您只需要知道实现实现了接口中声明的方法。
但是:为你编写的每个类创建一个接口是没有意义的!有时,适当的类层次结构或抽象基类就足够了。
编辑我认为你的理解不完全正确。您的目标是尽可能少地使用类的功能。虽然可以使用接口来实现您所描述的内容是正确的,但是在大多数情况下,给定的场景并不是所期望的,并且它不是接口的主要目标。