8

できる限り依存性注入を使用しようとしていますが、短命の依存性などに関しては問題があります。

たとえば、データベースで見つかったブログのリストを生成するブログ マネージャー オブジェクトがあるとします。これを行うためのオプションは(私が知る限り)次のとおりです。

  1. 新しいブログ();
  2. $this->loader->blog();
    • ローダー オブジェクトは、データベース オブジェクト、テキスト フィルターなど、さまざまな種類のオブジェクトを作成します。
  3. $this->blogEntryFactory->create();

ただし、#1 は強いカップリングを作成するので悪いです。#2は、オブジェクトファクトリを事前に注入する必要があることを意味するため、まだ悪いようです-作成できる他のすべてのオブジェクトを公開します.

番号 3 は問題ないようですが、番号 3 を使用する場合、「新しい」キーワードを blogEntryFactory 自体に入れるか、またはローダーを blogEntryFactory に挿入してローダーを使用するか?

blogEntryFactory のような多くの異なるファクトリがある場合 (たとえば、userFactory と commentFactory を使用できます)、これらすべての異なるファクトリに「new」キーワードを配置すると、依存関係の問題が発生するように見えます。

これが理にかなっていることを願っています...

ノート

この特定のブログの例ではこれが不要であるという回答がいくつかありましたが、実際には、Abstract Factory パターンを使用する必要がある場合があり、それが私が理解しているポイントです。その場合、「新しい」を使用しますか、それとも何か他のことをしますか?

4

2 に答える 2

4

私は専門家ではありませんが、これを見てみましょう。Blogこれは、一部のデータのコンテナーとして機能し、コントローラーによって満たされる単なるデータモデルオブジェクトであると想定しています (new Blogあまり意味がありません)。この場合、Blogはオブジェクト グラフの葉であり、使用してnewも問題ありません。を作成する必要があるメソッドをテストする場合Blogは、とにかくの作成を同時にテストする必要がありBlog、モックオブジェクトを使用しても意味がありません.. はBlogこのメソッドを超えて持続しません。

例として、PHP には配列構造がなく、コレクション オブジェクトがあるとします。電話しますか、それとも$this->collectionsFactory->create()言ってnew Array;よろしいですか?

于 2012-02-02T20:15:38.133 に答える