【问题标题】:GWT-Platform: where the business logic should go?GWT-Platform:业务逻辑应该去哪里?
【发布时间】:2011-09-27 08:03:43
【问题描述】:

我刚刚掌握了 GWTP 和 MVP、GIN 和 Dispatch。

使用 dispatch 有一个 Handler 类,它定义了动作做什么并相应地返回一些东西。

到目前为止,我发现自己有 2 个操作需要执行相同的方法。我相信 ActionHandling 不是业务逻辑所在,而是它应该放在它后面的一层,以某种方式传递给它

我应该如何布局我的逻辑?顺便说一句,我想稍后使用 Hibernate。

编辑:

作为说明,应用在实践中提供的答案,需要做的是:

1.- 创建一个扩展 AbstractModule 的模块类,其中包含

bind(Service.class).to(ServiceImpl.class);

2.- 在您的 GuiceServletcontextListener 上将您的 serviceModule 添加到 getInjector 方法返回:

return Guice.createInjector(new ServerModule(), new DispatchServletModule(), new ServiceModule());

3.- 你的 actionHandlers 构造函数有这样的东西

@Inject
  TestHandler(Service service) { this.service=service }

【问题讨论】:

    标签: gwt dispatch gwt-gin gwt-platform


    【解决方案1】:

    业务逻辑应该在您的业务对象中,它们独立于您的 Handler 类。尝试以与技术无关的方式设计您的业务层。 处理程序将所有重要的处理委托给业务对象,因此它们(处理程序)实际上应该非常薄。

    【讨论】:

    • 我倾向于有一个专门的服务层,与您的业务对象概念非常相似。服务层负责任何繁重的工作(除了我重构为实用程序类的任何可重用的东西......),并且我尽量保持我的处理程序和 DAO 类都非常精简。
    • 是的,你们俩都是对的,只是不确定我在哪里将我的服务连接到处理程序,因为我知道我已经使用 GIN 进行了依赖注入,只是不知道如何,尝试上面的答案
    【解决方案2】:

    您可以尝试将服务层注入处理程序。可以将服务创建为单例。

    @Inject
    public MyHandler(MyService service) {
      this.service = service;
    }
    

    【讨论】:

    • 我从来没有想过那里的构造函数是为此目的的,我会试一试,thx
    • 好的,没用,消息说 1) com.test.domain.Service 没有实现绑定。我想我也需要对我的服务做点什么。你能帮我一把吗?
    【解决方案3】:

    MyService 是一个接口吗?如果是,你忘了在 Guice 中绑定它。

    我个人使用 DAO 将我的逻辑放在 ActionHandler 和我的持久性框架(Hybernate、Objectify、Twig-Persist 等)之间

    【讨论】:

    • 是的,忘了这样做,对已经绑定的操作和绑定服务感到困惑
    猜你喜欢
    • 2011-06-28
    • 2011-04-20
    • 1970-01-01
    • 2010-12-22
    • 2017-03-27
    • 2016-12-18
    • 2012-07-16
    • 2017-08-11
    • 2012-10-06
    相关资源
    最近更新 更多