在我的設計中,我想要一個視圖/演示者對,其中演示者是一個可以擴展的抽象類。例如,我的設計由一系列問題組成,每次問一個問題。對於是/否的問題,我可能會有一個視圖/演示者對。我希望有一個YesOrNo演示者,抽象方法如getQuestion,onYes,onNo。這位主持人的露面會產生疑問,而超載的uibinderHandlers會打電話給你,並且不會。然後,我可以擴展YesOrNo主持人與HasDogYesOrNo主講人,其中將包含業務邏輯,如果使用有狗,該怎麼做。我可能有類似的HasCatYesOrNo。GWTP和抽象主持人類
所以我創建了一個擴展了一般
YesNoPresenter<T extends Proxy<?>> extends Presenter<YesNo.MyView, T>
每個然後我定義的類,如
public class HasCatsYesNoPresenter extends YesNoPresenter<HasCatsYesNoPresenter.MyProxy>
當我去約束他們,我有
bindPresenter(YesNoPresenter.class, YesNoPresenter.MyView.class, YesNoView.class,
HasCatsYesNoPresenter.MyProxy.class);
bindPresenter(YesNoPresenter.class, YesNoPresenter.MyView.class, YesNoView.class,
HasDogsYesNoPresenter.MyProxy.class);
兩班
但我得到一個錯誤,
$MyView is Double-bound: Bound at com.gwtplatform.mvp.client.gin.AbstractPresenterModule ...
看來我無法將兩個演示者綁定到相同的視圖?我真的想重複使用視圖,但把不同的業務邏輯背後。在GWTP中有更好的方法嗎?我必須擁有與不同的業務邏輯主持人重複使用相同的視圖,並讓每個業務邏輯演示者都可以收藏。一個喜歡也會讓我的業務邏輯演示者成爲匿名類,但這可能會要求太多。
還有其他一些方法來實現我簡單的YesNo情況下的演示者,但我有一些更復雜的演示者,我認爲重用代碼的最佳方式是使用該演示者所需的邏輯來擴展基本演示者。 yesnopresenter只是一個例子。
我看到我需要將主持人綁定到代理,然後使用bindSharedView將基本主持人綁定到視圖。但是現在我很困惑基本演示者(抽象)類應該延伸到什麼地方?我問,因爲代理應該在presenterImpl類中,但是在基類中的視圖? – Michael