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)
    {
    }
}

私はちょうどこれをする必要があることに気づき、これが一般的に悪いカプセル化のにおいがする習慣であるかどうか知りたいと思いました。

4

1 に答える 1

1

あなたが行ったことは、FooをBarに注入することによる、依存性注入の形式です。私たちはあなたがそれをどのように使用するつもりかを知るのに十分な情報を持っていませんが、それは大丈夫に見えます。

カプセル化の代わりに、2つのクラス間の結合についてもっと心配します。

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

于 2012-05-10T05:29:20.733 に答える