oop - 如何提供具体的 GWT 实现

标签 oop gwt dependency-injection

假设我正在努力将一些服务器端类公开给 GWT 应用程序,但是使用特定于 GWT 的组件(例如 JSNI)可以更好地完成某些部分。

有哪些技巧可以做到这一点而又不会太hacky?

例如,我知道使用子包并使用 <super-source/>标签,但这要求包名称不同,这会导致 eclipse 提示。社区中的一般解决方案是告诉 eclipse 使用它作为源文件夹,但是 eclipse 提示有两个同名的类。

理想情况下,有一种方法可以将所有内容保留在单个源代码树中,并且实际上具有应用替代实现的不同类。这感觉更像是一种面向对象的方法。

我想向像 _gwt 这样的类添加一个后缀,它可以自动完成此操作,并且我知道我可以编写一个脚本来进行这种转换,但这肯定是一个拼凑。

我一直在考虑在我的项目中使用 Google 的 GIN/GUICE 库,我认为那里可能有某种解决方案,但我不确定,因为我还没有彻底调查它。

您过去在 GWT 项目中尝试过哪些解决方案?

最佳答案

分割实现的最简单方法是使用 super 源代码,但仅足以实例化唯一命名的实例或分派(dispatch)到不同的方法。理想情况下, super 源实现只有几行长,而且还不错,以至于您无法手动滚动它。

为了解决 Eclipse/javac 双重映射和包名称问题,GWT 源使用两个 top-level roots对于用户代码:user/src 和 user/super。例如,AutoBeans 包具有 JSON 引用和评估的拆分实现, one for the JVMone for the browser .

确实没有一种非笨拙的方法来实现 super 源,因为这是一种超出您可以在语言中指定的功能的方式。如果不使用某些外部工具,就没有什么可以让您说“在此环境中使用此实现”。

关于oop - 如何提供具体的 GWT 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4941217/

相关文章:

css - 在 GWT 中将 css 与自己的类一起使用

c# - 长度为 2 的多个构造函数。无法与 Unity 消除歧义

android - 如何在考虑测试的情况下使用 Dagger 设计 Android 应用程序

c# - 使用动态设置不受控制的(第三方)密封类型的不同属性

php - 将 $this 传递给函数

GWT 树,开幕事件

javascript - Firefox 中 javascript RegExp 的奇怪行为

c# - xml到linq与两个类c#

php - 鉴别器列可以成为 Doctrine2 中主键的一部分吗?

c# - Ninject WithConstructorArgument : No matching bindings are available, 并且该类型不可自绑定(bind)