我在界面(技术,c#)上看到了很多不同类型的答案,为什么会出现这种情况。等等..
今天我想问你们,问我们的理解是否正确?
当您希望消费者类(比如B,C,D,E类)出于某种原因使用A类时,您将在A类上实现一个接口(原因是接口名称)。
让我们说A类具有删除员工工作历史数据的功能,并且它可以删除员工技能组数据。此类A具有名为Employee_Id
的非null属性现在您将实现2个接口IDeleteWorkHistroy和IDeleteSkillSet并在A类中实现它们
所有消费者类B,C,D ......只会通过这两个界面与您的班级交谈,他们不会直接在应用程序的任何地方使用A类实例
e.g。 在B类中,只想删除员工的工作经历: IDeleteWorkhistory EmpWH =新的A类( emp_id ); 在B级的其他任何地方,你都会使用EmpWH而不是A类。
基本上,你班级的消费者只会使用他需要的东西,或者消费者会以其他方式与他所需要的界面交谈。
换句话说(键盘是你的电脑的接口)如果你想和你的电脑对话,你不需要一个比特序列器,你可以使用中断将一点一滴的信息传递给CPU ..(但理想情况下,你可以做到它)。 您只能使用适当的界面与机器通信。
因此,您正在编写的任何课程,编写适当的界面,以便消费者以标准方式与您的班级交谈。
如果我的理解正确或需要修改,请告诉我?
答案 0 :(得分:1)
我认为你的理解是正确的。我通常将接口视为功能的标记。一个类可能有多个功能,当你继承接口时,就像说我能够做到这一点。一些消费者可能不需要所有功能,或者可能不需要与另一个功能相同的功能。
另一方面,这不是接口的唯一用途。有时您使用它们以某种方式实现多重继承,有时用于IOC目的。但在你的背景下,我认为你是对的。
答案 1 :(得分:1)
接口基本上是一个合同。通过在类中实现接口,您说该类将提供某些方法。
例如,如果您创建一个类并使用IDisposable接口,那么您说您的类将提供IDisposable指定的方法,例如,Dispose()。
答案 2 :(得分:0)
实际上,我看到界面更像是一个“模板”。例如:您希望确保类提供某些功能。界面允许使用类的人专注于功能而不是如何实现。
示例:列表
列表需要添加,搜索和删除项目以及在特定位置获取项目的方法。这可以变成一个界面。
现在可能有多个内部以不同方式工作的接口实现。例如,可能有ArrayList
将列表作为数组进行管理,SingleLinkedList
实现链接列表或DoubleLinkedList
。所有这些实现都是不同的,例如也有不同的性能。
如果要编写一个对列表进行排序的方法,则不关心给出哪种类型的列表 - 您需要知道的是实现实现了接口中声明的方法。
但是:为您编写的每个课程创建一个界面是没有意义的!有时候,适当的类层次结构或抽象基类就足够了。
修改强>
我不认为你的理解是完全正确的。你说的目标应该是尽可能少地使用类的功能。虽然接口可以用于实现您所描述的内容是正确的,但给定的方案是不在大多数情况下需要的是不< / em>接口的主要目标。