发布于 2011-01-05 18:53:51
只要回调中提供的所有信息都是正确的,class A就不应该担心回调是由B或某些完全不同的代码进行的。
这意味着,如果您的测试案例能够获得回调所需的所有信息,那么您可以在适当的时候从测试脚本中调用回调,并为class B使用一个模拟。
如果class A实际检查回调是否由class B执行(到目前为止实际上可以实现),那么类A和B耦合得太紧,无法单独测试它们。那么,您应该重新考虑它们是否真的应该是两个紧密耦合的类。
发布于 2011-01-05 15:19:13
我不知道我是否理解你的问题,但似乎你想要的是战略模式。只要B中有一个A_abstract指针作为成员变量,就可以实现从B到A的回调。
class A_abstract {
public:
virtual void work() = 0;
};
class B {
private:
A_abstract* _m_A_ptr;
public:
set_a_ptr(A_abstract* _APtr) { _m_A_ptr = _APtr; }
void work() { _m_A_ptr->work(); }
};发布于 2011-01-05 18:56:55
你考虑过使用Qt(或其他人的)信号和插槽吗?与回调相比,我更喜欢关于信号和插槽的推理,尽管(我认为)它们在功能上基本上是等价的。
-布莱恩-
https://stackoverflow.com/questions/4602897
复制相似问题