在用 PHP 中的对象(可能是我想象的其他语言)进行编码时,我一直很难理解接口(interface)的真正值(value)
据我了解,您使用 Interface
来强制或保证当一个类使用 Interface
时,该类将具有 中定义的方法该类内部的接口(interface)
。
因此,根据我对使用它们的了解,这是否意味着在定义多个需要这些方法的类时,您只会发现 Interface
有用?
更清楚地说,如果我有一个类只做一件事而没有其他类需要做那种事,那么在该类上使用 Interface
就没有意义了吗?
所以您不会在每个类上都使用 Interface
,对吗?
PS) 如果您将此问题投票为 exact duplicate
那么您没有阅读问题而只阅读了标题,因为我已经阅读了大部分类似的问题
最佳答案
From what I understand you use an Interface to enforce or guarantee that when a Class is using an Interface that that class will have the methods defined in the Interface inside of that class.
这实际上只是交易的一半(技术部分)。还有最重要的架构部分,它在您使用界面时出现,它是这样的:
function feed(IAnimal $interface) {
// ...
}
(或者,记录为返回实现 IAnimal
的实例的“工厂”函数也可以作为示例)。
这里的想法是界面的消费者说:“我想要一只动物来喂食。我不在乎它是飞的、走的还是爬的。我不在乎它是大还是小。我只注意它与所有其他动物共享一些特征”——构成界面定义的特征。
换句话说,接口(interface)用于从具体实现(类)中抽象出契约(接口(interface))。这让具体类的实现者可以自由地修改、重命名、删除和添加实现,而不会破坏接口(interface)用户的代码,如果您直接在 API 中引用具体类,这是不可能的。
至于仅由一个类实现的接口(interface):信息不足以决定。如果将来可能有更多接口(interface)的实现,那么它确实有意义(例如:即使 Sha1HashFunction
是 目前唯一可用的实现)。否则它不会提供任何东西。
关于php - 何时在 PHP 中使用接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8552505/