是否包含对调用或包含类错误封装的引用?

时间:2012-05-10 03:19:52

标签: oop encapsulation

我有一个更普遍的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 个答案:

答案 0 :(得分:1)

你所做的是dependency injection的一种形式,将Foo注入Bar。我们没有足够的信息来看你打算如何使用它,但它看起来还不错。

而不是Encapsulation,我会更关心两个类之间的耦合。

您可以考虑单独创建两个类并在条形实例上设置foo引用。