0

私は、具体的なクラスの実装にデータをオブジェクトにロードするload()メソッドを使用するように強制することを目的として、PHPでeコマースクラスのライブラリを抽象クラスとして書き始めました。

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 ...
  }
}

インターフェイスは、派生クラスの構造を記述するために使用されます。これは、すべて同じメソッドを提供するさまざまなクラスを追加する場合に最適な方法です。もう 1 つの利点は、クラスが 1 つの親クラス (つまり Cart クラス) しか拡張できないが、複数のインターフェイスを実装できることです。PHP.net のインターフェースについてもっと読んでください。このパターンがあなたの要件に合うと思う理由を下線で示した抜粋を次に示します。

オブジェクト インターフェイスを使用すると、クラスが実装する必要があるメソッドを指定するコードを作成できます。これらのメソッドの処理方法を定義する必要はありません。

于 2012-12-20T17:17:47.453 に答える