Ho un'applicazione abbastanza semplice divisa in due classi. La prima classe è la classe Manager e la seconda classe è la classe dipendente. Queste sono classi semplici e non ereditano da nessun'altra classe. Ora quello che voglio è impedire agli altri di creare un'istanza della classe del dipendente. La classe Manager ha un puntatore istanziato alla classe dipendente e controlla tutti i metodi della classe dipendente da lì. La mia prima idea è di mantenere il costruttore del dipendente come privato e mettendo il manager come suo amico. Ad esempio:
class employee
{
friend class manager;
private:
employee()
{
}
}
class manager
{
private:
boost::shared_ptr<employee> emp;
public:
bar()
{
emp = boost::shared_ptr<employee>(new employee());
//Now manager uses this pointer to control employee
}
}
Questo è qualcosa che mi è venuto in mente, ma volevo sapere se c'era un modello di progettazione o un approccio migliore per raggiungere questo obiettivo. Il mio obiettivo è impedire agli altri di creare o utilizzare la classe dei dipendenti, l'unico svantaggio che vedo è esporre le variabili private della classe dipendente alla classe manager