【问题标题】:Consolidation of shared and client package合并共享和客户端包
【发布时间】:2014-06-14 04:05:30
【问题描述】:

我刚刚试用了 Eclipse 生成的 GWT 示例项目,并意识到您可以将所有类从客户端包移动到共享,并且它可以像以前一样工作。我想为我的项目使用 按功能打包 策略,而不是按层打包。我的想法是将一个域类及其 UI 类放在一个共享包中。

这种方法有什么副作用或缺点吗?

【问题讨论】:

  • 根据我的经验,域类经常被多个“特性”使用。例如,客户类可能用于“购物车”功能和“销售分析”功能。我不会将域类限制为特定功能。
  • 术语 nit-pick:客户端/共享/服务器并不是“逐层打包”,而是“按兼容性打包”。理论上,shared 中的任何类都可以在浏览器或 JVM 中运行,但对于客户端或服务器中的类则不然。尝试在服务器上运行客户端类将导致链接错误,尝试在客户端上运行服务器类将导致编译器错误。
  • @Andy 域类仍然是公开的,并且可以被不同的特性使用。
  • 我会尝试按功能打包,看看是否有一些简单的约定可以保持它的可维护性。如果是这样,我希望有更清洁和更模块化的代码。

标签: gwt


【解决方案1】:

没有副作用。使用适合您需要的项目结构。请记住考虑长期代码维护,特别是如果其他开发人员以后可能会接管您的代码。

【讨论】:

    【解决方案2】:

    根据 GWT 项目结构,Shared 包用于共享 ClientServer 端同时使用的类。 p>

    现在您不想将表示逻辑暴露给服务器,如果您这样做了,那么仍然没有任何意义。

    大多数数据传输对象、POJO 和实用程序类都在 Shared 包下。我已经发布了HERE,这将帮助您更好地理解它。

    阅读全文


    副作用:

    您正在混合 Web 应用程序的不同层。您正在远离Model–view–controller 模式并试图重现相同的问题,这就是专家在经过大量经验后发现此设计模式的原因。

    值得一读What Are The Benefits of MVC? – the Gang of Four

    【讨论】:

    • GWT 的表示逻辑无论如何都会在开发期间暴露给服务器。所以你只需要知道不要使用客户端包中的类。使用我的方法,您必须知道不应访问每个功能包中的某个 ui 类。我认为这很容易,因为服务器根本不处理演示。关注点的分离将更多地在类级别而不是包级别。而且我不认为这违反了MVC。您只需将 MVC 机制放在一个包中而不是多个包中。
    • 我想建立一个系统,其中包是插件,你可以放入和取出。除此之外,按功能打包还有很多优点:link
    • 好的,然后继续。仅合并共享包和客户端包没有问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-07
    • 2011-11-09
    • 2017-10-27
    • 1970-01-01
    • 1970-01-01
    • 2011-05-21
    • 1970-01-01
    相关资源
    最近更新 更多