我在抽象类中有一个监听器方法:
public void AsyncTaskListener(AbstractModel result){
和一堆钩子:
protected void RecieveModelAHook(ConcreteModelA){}
protected void RecieveModelBHook(ConcreteModelB){}
protected void RecieveModelCHook(ConcreteModelC){}
现在,当调用AsyncTaskListener时,它应该决定调用哪个钩子。 目前我解决了这个问题:
public void AsyncTaskListener(AbstractModel result){}
if(result instanceof ConcreteModelA){
RecieveModelAHook((ConcreteModelA) result);
}
if(result instanceof ConcreteModelB){
RecieveModelBHook((ConcreteModelB) result);
}
}
有更好的解决方案吗?或者也许是这种事情的模式?
AsyncTask读取不同的JSON字符串,从中创建像ConcreteModelA,ConcreteModelB这样的模型。由于每个客户端都应该能够处理不同的结果,我需要钩子。
在AsyncTask中我有一个请求类型。 请求类型1创建ConcreteModelA 请求类型2创建ConcreteModelB
它现在有效,但我对丑陋的演员不满意。
答案 0 :(得分:0)
听起来你已经使用了strategy pattern。而不是在你的代码中有这样的转换需要在有新案例时进行更新,尝试通过封装更改的部分并通过使用合成将其移出类,来利用多态性。