0

ストレージ関数で抽象化し、複数のデータベース アダプターを用意する必要がある状況があります。

ただし、ライブラリ用に複数のデータベース アダプターも用意している外部ベンダーに依存しています。

外部ベンダーから対応する MySQL アダプターの機能を継承する単一のアダプターを MySQL で作成したいと考えています。このアダプターを、独自のライブラリーと、アダプターに依存して機能する外部ライブラリーに依存性注入できます。

もちろん、PHP には多重継承がないので、いろいろ調べて構成にたどり着きました。

複数のデータベース アダプタを 1 つのデータベース アダプタに合成することは良い方法ですか? さらに、外部ベンダーの対応するインターフェースから拡張されたインターフェースを実装した場合、この構成されたオブジェクトは機能しますか?

たとえば、次のことを想像してください。

External1\StorageInterface
External1\MySQLAdapter
External2\StorageInterface
External2\MySQLAdapter
Internal\StorageInterface
Internal\MySQLAdapter

Now: Internal\StorageInterface extends External1\StorageInterface, External2\StorageInterface
Then: Internal\MySQLAdapter implements Internal\StorageInterface
Then: Internal\MySQLAdapter compositions External1\MySQLAdapter and External2\MySQLAdapter

余談ですが、合成はどのように行うべきですか? __call または関数名を再実装し、子オブジェクトを呼び出すだけですか? インターフェイスの制約を満たすのはどれですか?

もう 1 つの質問は、異なるアダプターが同じ関数名を持ち、競合が発生した場合にどう対処するかということです。アダプター パターンは機能しますか?

4

0 に答える 0