2012-01-23 8 views
0

これらはすべて同じオブジェクトを使用するため、このクラスは3つのクラスにあります。各クラスでコードを繰り返さないように、私はそれを親クラスに抽出する必要がありますか?それは私がしたいの優先事項の問題であれば。依存関係注入パターンのコード統合

この関数は、依存性注入パターンを暗示するために作成されました(私の意見では、depedenciesを削除するため)。

public function setObjects($DatabaseObject, $TextObject, $MessageObject) 
{ 
    $this->DatabaseObject = $DatabaseObject; 
    $this->TextObject = $TextObject; 
    $this->MessageObject = $MessageObject; 
} 
+0

実際には、外側のdepencendyを定義し、それをターゲットオブジェクトに渡します。そのように、ハードコーディングの依存関係とは異なり、依存関係を注入します。 – SteAp

答えて

2

はい、可能な限り、あなたは常にDRYコードを作成する必要があり、それはすべての子クラスに適用する場合は、親クラスに移動し、必要に応じてクラスをオーバーライドしてみましょう。

また、依存関係をクラス内に作成するのではなく、注入するので、依存関係注入と呼ばれます。

+0

ディレマはこれが1つの関数を持つクラスになると思います...私は関数setThreeまたはsetTrinityを呼び出すことができます...しかし、どのような名前を私はクラスに与えるでしょう...私の慣習は、クラス名は名詞です...私は自分のコードを読めるようにしたい。 –

+0

インスタンス化されない親クラスであれば、クラスと呼ばれるものは問題ではありません。また、他の理由から、依存性注入メソッドを3つの異なるメソッドに分割することをお勧めします。それぞれのメソッドは1つの依存関係のみを設定します。テスト、デバッグ、およびリファクタリングが非常に簡単になります。 – FtDRbwLXw6

関連する問題