在接口 (OOP) 中添加属性是否是一种好的做法


Is it a good practice to add attributes in Interface (OOP)

请参阅下面的对象:

interface IMedia
{
    public function getThemed();
    public function getDownloadLink();
}
class Video implements IMedia
{
    public function getThemed() {}
    public function getDownloadLink() {}
}

如果有一些共同的属性,例如:

public $size;
public $uploadedDate;
public $hitCounts;

它们可以添加到 IMedia 中吗?还是建议在那个地方使用抽象类?

@Muneer

首先这是不可能的。接口不允许这样做。我建议做这样的事情:

interface IMedia {
}
abstract class AbstractMedia implements IMedia {
  public $property = "value";
}

,一般来说,你当然希望尽可能抽象。因此,访问器/突变器完全有意义,以避免仅针对访问器/突变器进行类型转换。现在将有一个只用于属性实现的抽象类。

相关文章: