我需要帮助理解松耦合.当子对象需要与父对象通信时,如何设计一个使用组合松散耦合的类?让我举个例子:
我们有这个:
class A {
private:
B b;
public:
void foo();
};
Run Code Online (Sandbox Code Playgroud)
B对象如何从容器类A调用函数foo()?显而易见的答案是"只是将指针从A传递到b",但这是紧密耦合,而且设计不灵活.
你能给我一个简单的解决方案来解决这个问题(最好用C++或Java)或提供处理这些问题的设计技巧吗?
我的真实案例来自为JRPG开发游戏引擎.我有这门课:
class StateMachine
{
private:
std::map<std::string, State*> states;
State* curState;
public:
StateMachine();
~StateMachine();
void Update();
void Render();
void ChangeCurState(const std::string& stateName);
void AddState(const std::string& stateName, State* state);
};
Run Code Online (Sandbox Code Playgroud)
在每个调用的游戏循环Update()中StateMachine,调用Update()函数curState.我想要curState能够ChangeCurState从StateMachine班级调用,但松耦合.