我在php中工作,接口的概念在这里对我来说似乎有点没用。从阅读中,我了解到接口是“按合同设计”的一部分,但至少在不保证返回特定类型的情况下,实际上没有任何合同。看起来这就像一份合同,上面写着“我们同意执行以下操作:''”——没有协议条款。
如果我想保证一个对象有一个方法,那么接口似乎并不是特别有用。如果我试图调用一个对象没有的方法,我会得到一个致命错误,所以我很快发现该类没有具有该名称的方法。如果我想聪明一点,事先检查一个类是否有方法,然后检查接口,看看对象是否实现了该接口,似乎并没有比直接检查该对象节省更多时间(我会这样做)无论如何要查看该类是否具有该方法,而不管它实现或未实现的任何接口)。
换句话说,仅仅因为我有一组具有特定名称的方法,这并不能保证我有任何特定的行为。如果我保证返回某种类型的变量,我至少对输出会有一些了解,并且我可以编写使用具有该接口的对象的代码,因为我知道我得到了什么其中。如果它返回一个字符串,我可以继续编码,至少可以确定我正在处理之后的字符串输出。因此,当指定返回类型时,我至少可以保证某些行为。保证行为是接口的一部分,还是没有?
我唯一能想到的是,当我编写代码时,它可以作为我自己的便利贴,以确保在以后编写该类时创建某些方法。当我编写代码时,它似乎更像是脚手架;当我实际使用它时,我看不到太多好处。所以对我来说,在创建类时保持标准比在编写类时更重要。这种好处似乎并没有真正体现在按合同设计的概念中。
在 PHP 等动态/松散类型语言中使用接口实际上能获得什么好处?它们很棒,还是它是更强大的面向对象语言实现的东西,所以 PHP 也实现了它?