美文网首页
GWTP核心 The base: PresenterWidget

GWTP核心 The base: PresenterWidget

作者: 蒲印MkII | 来源:发表于2018-05-03 10:47 被阅读0次

当UI组件需要跨应用程序多次重用时,GWT小部件很有用。

GWTP的PresenterWidget是一个利用常规GWT Widgets功能的强大工具,因为它可以很好地分离您的UI组件。

应用程序通常包含复杂的UI小部件,有时这些元素非常复杂,以至于最好将应用程序逻辑与UI逻辑分开。这是它来得方便的地方。

SimplePresenter.java

public class SimplePresenter extends PresenterWidget<SimplePresenter.MyView> {
    interface MyView extends View {
        void displayCurrentUserName(String username);
    }

    private final CurrentUserService currentUserService;

    @Inject
    SimplePresenter(EventBus eventBus,
                    MyView view,
                    CurrentUserService currentUserService) {
        super(eventBus, view);

        this.currentUserService = currentUserService;
    }

    @Override
    public void onBind() {
        getView.displayCurrentUserName(currentUserService.getCurrentUsername());
    }
}

SimpleViewImpl.java

public class SimpleViewImpl extends ViewImpl implements SimplePresenter.MyView {
    interface Binder extends UiBinder<HTMLPanel, SimpleView> {
    }

    @UiField
    SpanElement username;

    @Inject
    SimpleView(Binder binder) {
        initWidget(binder.createAndBindUi(this));
    }
    
    public void displayCurrentUserName(String username) {
        this.username.setText(username);
    }
}

SimpleViewImpl.ui.xml

ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
        xmlns:g='urn:import:com.google.gwt.user.client.ui'>
    <g:HTMLPanel>
        Current user's name: <span ui:field="username"></span>
    </g:HTMLPanel>
</ui:UiBinder>

如前所述,SimplePresenter与其视图实现松散耦合,因为它告诉做什么而不是如何去做。
这样做可能会让开发人员为同一个presenter实现多个view;presenter知道该怎么做,并且多个view分别处理其请求。

相关文章

网友评论

      本文标题:GWTP核心 The base: PresenterWidget

      本文链接:https://www.haomeiwen.com/subject/cldkrftx.html