我正处于开发学习的一个阶段,我觉得我必须了解更多关于接口(interface)的知识。
我经常读到它们,但似乎我无法理解它们。
我读过这样的例子:Animal 基类,带有 IAnimal 接口(interface),用于“Walk”、“Run”、“GetLegs”等 - 但我从未从事过某些工作,感觉就像“嘿,我应该在这里使用接口(interface)!”
我错过了什么?为什么对我来说这是一个很难理解的概念!我只是被这样一个事实吓到了:我可能永远不会意识到对它们的具体需求——主要是由于理解它们的某些方面缺失了!这让我觉得作为一名开发人员我错过了一些最重要的东西!如果有人有过这样的经历并取得了突破,我将不胜感激一些关于如何理解这个概念的提示。谢谢。
最佳答案
它解决了这个具体问题:
你有 a、b、c、d 4 种不同类型。在你的代码中你都有这样的东西:
a.Process();
b.Process();
c.Process();
d.Process();
为什么不让他们实现 IProcessable,然后再执行
List<IProcessable> list;
foreach(IProcessable p in list)
p.Process();
当您添加 50 种类型的类(例如,所有类都执行相同的操作)时,这会扩展得更好。
<小时/>另一个具体问题:
您看过 System.Linq.Enumerable 吗?它定义了大量的扩展方法,可对任何实现 IEnumerable 的类型进行操作。因为任何实现 IEnumerable 的内容基本上都表示“我支持无序 foreach 类型模式中的迭代”,因此您可以为任何可枚举类型定义复杂的行为(Count、Max、Where、Select 等)。
关于design-patterns - 我如何知道何时创建界面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/444245/