2012-05-10 44 views
1

我有一個更普遍的面向對象問題。創建一個對調用/包含類的引用的成員是封裝不好的嗎?例如:是否包含對調用或包含類錯誤封裝的引用?

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的形式。我們沒有足夠的信息來查看你打算如何使用它,但它看起來沒問題。

而不是封裝,我會更關心兩個類之間的耦合。

您可以改爲分別創建兩個類並在條實例上設置foo引用。

+0

我最終不需要這個,因爲我想到了更通用的方法來做到這一點,但是,我的意圖是隻有Bar能夠打電話給Foo,因爲它是一個Manager類型類。 –