0

我在抽象类中有一个监听器方法:

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

它现在有效,但我对丑陋的演员表不满意。

4

1 回答 1

0

Sounds like you have use for the strategy pattern. Rather then having such a switch in your code that requires updating whenever you have a new case, try to make use of polymorphism by encapsulating the part that changes and moving it out of the class by usage of composition.

于 2013-02-10T23:08:59.637 回答