如何使视图保持“谦逊”-使用带有特殊Oracle和Recommendations的uggestBox

|| 我学会了如何实现自己的RecommendationOracle(\“ AuSuggestOracle \”)并拥有 建议(\“ AuMultiWordSuggestion \”)。就我而言,建议对象 由DTO构建。在选择事件中,我需要此dto(或 它的某些字段)做出适当反应。 我实现了一个包含3个建议框的小部件 甲骨文和他们之间的一些逻辑。现在我想应用MVP模式- 在演示者和视图中拆分此小部件。 目前,演示者的显示界面如下所示:
    public interface Display {
            HasSelectionHandlers<Suggestion> getFedLand();
            HasSelectionHandlers<Suggestion> getCounty();
            HasSelectionHandlers<Suggestion> getCommunity();
            AuSuggestOracle getFedLandOracle();
            AuSuggestOracle getCountyOracle();
            AuSuggestOracle getCommunityOracle();
            void clearCounty();
            void clearCommunity();
            void activateForm();
            Widget asWidget();
    }
问题是方法中关于我的模型的隐性知识 返回\“ AuSuggestOracle \”。所以我的问题是如何获得视图/ 界面“不起眼”。在我的情况下,显示的建议字符串是 模棱两可,我至少需要所选项目的\“ id \”才能知道 选择了DTObject。
已邀请:
我解决这个问题的方法是为甲骨文遗漏,因为一旦我的演示者对其进行设置,我的视图就不需要任何信息。因此,我的界面如下所示:
public interface Display {
    ...

    void setSuggestionOracle(SuggestOracle oracle);
    HasSelectionHandlers<SuggestOracle.Suggestion> getSelectionListener();
}
我遇到的问题是在实例化之后可以将建议添加到RecommendationBox。为了解决这个问题,我用一个空白的uggestBox进行了初始化,然后将其从视图中删除,进行了更新,然后将其重新插入到适当的位置。 之后,您可以编写您的处理程序(在演示者中)以检查建议是否是您的自定义建议的实例,演示者可以处理选择并将相关信息下推至视图。 这样一来,您的所有观点都知道它将针对某件事采用通用建议,并且稍后会使用信息进行更新(这将是该建议的结果,但观点是“谦虚”)。 \'知道)。

要回复问题请先登录注册