【发布时间】:2014-12-30 19:30:09
【问题描述】:
使用 PHP 5.5,如果我指定接口的层次结构和类的并行层次结构,我最终会得到通过多个关系继承某种类型的子类。这是否表明设计不佳?它会产生问题吗?
例如看代码:
interface foo {}
interface bar extends foo {}
class myFoo implements foo {}
class myBar extends myFoo implements bar {}
在本例中,myBar 通过两个关系继承类型 'foo':
- 它从它的具体父级 (myFoo) 继承“foo”
- 它从它实现的接口(bar)继承“foo”
我在接口和类之间建立一对一关系的原因是,我可以用代理和模拟替换细粒度的具体类。 (我所有的方法参数都用接口表示)。
我可以停止在我的接口中使用继承,但这似乎违背了多态性。此外,当我使用我的接口来定义方法签名(即不仅仅是建立一个通用类型)时,它也会产生问题。
【问题讨论】:
-
既然接口没有任何代码,为什么要扩展呢?无论如何,您不能重载接口中的函数。将 foo 和 bar 解耦,你应该没问题。
-
@JvO 因为想要表达“我希望这个接口定义所有与其他接口相同的方法,但也有一堆额外的方法。”
标签: php oop inheritance interface