2012-05-10 4 views
1

私はより一般的なOOP質問をしました。呼び出し/包含クラスへの参照であるメンバを作成するのは悪いカプセル化ですか?たとえば、次のように呼び出し元クラスまたは含まれているクラスへの参照が含まれていますか?

class Foo 
{ 
    void DoSomething() 
    { 
     Bar bar = new Bar(this); 
    } 
} 

そしてBar.csまたはBar.cppまたはどこ

public class Bar 
{ 
    private Foo m_myFoo; 
    public Bar(Foo foo) 
     : m_myFoo(foo) 
    { 
    } 
} 

に私は自分自身がこれを実行する必要が発見され、これは、一般的には、その実践であるかどうかを知りたいと思いました悪いカプセル化の匂いがする。

答えて

1

FooをBarに注入すると、dependency injectionのフォームが完成しました。どのように使用するのかを知るには十分な情報がありませんが、大丈夫です。

カプセル化の代わりに、私は2つのクラス間のカップリングについてより心配しています。

代わりに2つのクラスを別々に作成し、バーインスタンスでfoo参照を設定することもできます。

+0

これを行うためのより一般的な方法が考えられたので私はこれを必要としなくなりましたが、BarがManagerタイプのクラスであるため、Fooを呼び出すことができました。 –

関連する問題