Existe-t-il une différence en termes de mise en œuvre ? En effet, la conception de la composition peut être différente de la délégation. Par exemple, le code ci-dessous semble faire de la délégation puisque l'utilisateur ne peut pas accéder à l'objet composé (c'est-à-dire "a") sans utiliser b. Par conséquent, l'utilisateur devrait invoquer les interfaces de la classe b et ensuite la "classe b" invoque les interfaces appropriées de la "classe a", ce qui fait de la délégation. Cela a-t-il un sens ?
Class A {
friend class B;
private:
A(){}; //dont want user to instantiate this class object since it wont sense without any context. Just like a room with no house.
void PrintStructure(){};
};
Class B{
public:
void PrintStructure(){a.PrintStructure();} //delegate
private:
A a; //composition
};