Эй, я обычно сталкиваюсь с ситуацией, когда создаю класс, экземпляром которого должен быть только один или несколько классов. В этом случае я бы сделал его конструктор закрытым и сделал его классом-другом для объектов, которые должны иметь возможность его создания. Например (в C ++):
class CFoo
{
friend class CFoo;
// private ctor because only a select few classes should instantiate
private:
CFoo()
{
... Do stuff
}
}
class CBar
{
// CBar is one of the few classes that only need to use CFoo
CFoo *m_pFoo;
CBar()
{
m_pFoo = new CFoo;
}
}
Итак, мой вопрос: это глупо? Или есть лучший способ добиться этого? Мне особенно интересно, как он будет работать с C #, учитывая, что в языке полностью отсутствует ключевое слово friend. Спасибо.