在我的理解中,战略模式被用来使行为可以互换。这涉及到策略的责任是在接口中定义的,客户可以将其委托给接口。例如。假设可以通过不同的方式获得值,那么接口将有一个方法“getValue()”。逆向控制流程的策略模式是什么?
我的问题涉及其中控制流是相反的情况。例如,如果具体策略在客户端启动请求“onValueChanged()”(假设它具有对客户端或回调接口的引用)。
这仍然被认为是一种战略模式?
更新 - 增加了下面的源代码示例:
interface DataSupplierCb
{
void onValueChanged(int a);
}
interface DataSupplier
{
void check();
}
// NOTE 1: Data supplier knows how the get the value
class ConcreteDataSupplier : public DataSupplier
{
void check()
{
myDataSupplierCb.onValueChanged(47);
}
}
class Client : public DataSupplierCb
{
void onValueChanged(int a)
{
// NOTE 2: Client knows what to do with the value
}
void changeDataSupplier(int i)
{
if (i == 1)
{
myCurrentDataSupplier = new ConcreteDataSupplier(this);
}
}
}
对我来说,它看起来像'observer' – sll 2012-02-06 16:58:39
如果你的代码放了一点点的代码作为例子,那么它可能会有所帮助。甚至不必是真实的代码,伪代码就足够了。 – tcarvin 2012-02-07 13:09:47
感谢您的回复。我试图制作一个说明我的案例的源代码示例。 – Vandhunden 2012-02-07 13:54:16