在实现方面是否有任何区别,因为组合设计与委托不同。例如,下面的代码似乎在进行委托,因为用户不使用 b 就无法访问组合对象(即“a”)。因此,用户需要调用 b 类的接口,然后“b 类”调用“a 类”的适当接口使其委托。这有意义吗?
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
};