我应该在这里使用接口吗?

时间:2014-02-17 03:42:50

标签: php class

我有一个名为DataType的类,然后我有另一个扩展DataType的类,可以保存到数据库中:

class PersistableDataType extends DataType

然后我有更多的类扩展PersistableDataType。 PersistableDataType本身从未实例化。我已经读到这种情况是人们应该考虑使用接口。

如果我创建了一个Persistable接口,那么我不是必须在每个类中实现保存功能吗?我目前拥有的方式,我只需要在PersistableDataType中实现保存功能,然后每个子类都继承该功能。

解决这个问题的“正确”方法是什么?

1 个答案:

答案 0 :(得分:0)

创建普通类或抽象取决于PersistableDataType类的目的 - 主要是:拥有该类的实际实例是否有意义?如果答案是肯定的,那么将其创建为普通类并扩展它。如果它没有意义,并且它包含的方法纯粹是通过继承类来使用,那么将它创建为类抽象。 两种方式允许您的类包含传递内容的方法声明(所以不,您不必在所有继承类中重写相同的保存函数),并且任何非抽象方法仍然可以被覆盖继承类 - 只有抽象方法必须使用相同的签名和可见性。

所以最终“正确”的方法不取决于你是否真的创建了一个类的实例,而是取决于是否有一个类的实例是有意义的。是的:正常的班级;不:抽象类。