3

MongoDBをデータベースとして使用しているWebサイトを作成していますが、将来的には他のストレージシステムも使用できるようにしたいので、抽象ファクトリパターンの完全な実装を使用したいと思います。完全な実装では、これを参照します。

  • 「database_factory」抽象クラス。これは、クライアントコード(コントローラー)がファクトリオブジェクトを作成するために使用する必要があります。
  • Database_factoryクラスを拡張する「mongodb_factory」クラス。

  • 一連のクエリを表す「customers」抽象クラス。

  • 「Customers」クラスを実装する「mongodb_customers」クラス。「mongodb_customers」オブジェクトは「Mongodb_factory」によって返される必要があります。

私は純粋なOOPHPでこれを行う方法を正確に知っています。しかし、CodeIgniterが提供するモデルアーキテクチャとそれをマージする方法がわかりません。

「Customers」抽象クラスを作成し、次に「Mongodb_customers」を実装するのは簡単ですが、ファクトリも利用したいと思います。

CodeIgniterでモデルが必要な場合は、「$ this-> load-> model('my_model');」を使用するだけです。そしてその関数を使用しますが、ファクトリオブジェクトを作成し、インターフェイス(抽象クラ​​ス)を介して使用する必要な具象モデルを返すようにするにはどうすればよいですか?

これを達成するチャンスはありますか?

みなさん、ありがとうございました。

4

1 に答える 1

1

うーん-だからあなたは異なるdb実装を切り替えられるようにしたいのです。アダプターパターンはこれにより適しているのではないでしょうか?新しいデータベースをラップする新しいモデルを作成し、それを呼び出す必要があります。抽象ファクトリは、具体的なクラスを公開せずに、関連/依存オブジェクトのセットを作成するためだけのものだと思いました。それがあなたのやりたいことなら、ファクトリとして機能するモデルを作成し、次に抽象クラスモデルを拡張する他のモデルを作成できると思います(私はこれを試したことがありませんが、それを拡張するクラス)。そうすれば、ファクトリをロードするときに、メソッドの1つを呼び出すことができ、そのメソッドは適切な実装をロードします(ロードはファクトリのメソッドで行われます)。

于 2012-06-03T13:30:23.963 に答える