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. 我们没有足够的信息来了解您打算如何使用它,但看起来还可以。

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

您可以考虑分别创建这两个类并在 bar 实例上设置 foo 引用。

于 2012-05-10T05:29:20.733 回答