0

我已经开始在 PHP 中编写一个电子商务类库作为抽象类,目的是强制具体类的实现使用将数据加载到对象中的 load() 方法:

abstract Cart {
    abstract function load();
    // other stuff ...
}

class MyCart extends Cart {
    public function load()
    {
        // pull in data from anywhere ...
    }
}

我想知道这是否是这样做的正确方法......

我想要:

  • 保持核心库不受影响。
  • 保持非常简单,我们打算重复使用此代码,其他人将实现它。

我听说过适配器和东西,虽然我还没有研究过这些(还)..有人能指出我正确的方向吗?

干杯,约翰。

4

1 回答 1

2

我建议不要使用抽象类,而是为此目的使用接口:

interface Cart {
  public function load();
  // other stuff ...
}

class MyCart implements Cart {
  public function load()
  {
    // pull in data from anywhere ...
  }
}

接口用于描述派生类的结构,如果您想添加提供相同方法的不同类,这是最好的方法。另一个优点是一个类只能扩展一个父类(即您的 Cart 类),但可以实现多个接口。在 PHP.net 上阅读有关接口的更多信息,这里有一段摘录强调了为什么我认为这种模式符合您的要求:

对象接口允许您创建指定类必须实现哪些方法的代码,而无需定义如何处理这些方法。

于 2012-12-20T17:17:47.453 回答