【问题标题】:Best implementation for a callback method to update multiple fields更新多个字段的回调方法的最佳实现
【发布时间】:2010-10-10 18:48:02
【问题描述】:

我正在使用 Java 开发一个使用 Google Translate API 的移动应用程序 (BlackBerry)。我已经设置好了,这样用户就可以在登录之前指定一种语言,然后一旦他们登录,我就会对显示在屏幕上的每一段文本进行包装,这将根据选择的语言翻译文本。

我的问题是需要在给定屏幕上翻译多个内容。因此,我必须在每个屏幕上多次访问 Google Translate API。为此,我在一个新线程上打开一个 HTTPConnection。所以我将我的 Screen Interface 传递给 Translator 类,然后 Translator 类将为该 Screen 调用我的回调方法(requestSucceeded() 或 requestFailed())。

现在,假设我翻译了屏幕标题和屏幕正文文本。那是两个独立的 HTTPConnections。所以当标题被翻译时,我希望我的 requestSucceeded() 方法在我的标题 LabelField 上设置文本。翻译正文文本后,我希望我的 requestSucceeded() 方法在我的正文 LabelField 上设置文本。

让我的 requestSucceeded() 方法区分要更新的不同字段的最佳方法是什么?目前,我向 Translator 传递了两件事(通过 String[] 数组):要翻译的文本和描述正在翻译的项目的“cookie”。然后我在我的 requestSucceeded() 回调方法中使用 if 语句来更新基于“cookie”的适当字段(翻译器将连同翻译的文本一起发回)。

我觉得必须有更好的方法来完成这一切。有人有什么建议吗?

谢谢!

【问题讨论】:

  • 你的方法听起来很合理。不要试图太聪明。使用最简单的有效解决方案。

标签: java blackberry mobile methods callback


【解决方案1】:

首先,我建议您阅读Command Pattern。它基本上是一种设计方法,可用于将您的每个翻译请求封装在一个知道如何处理结果的对象中。然后我建议有一个可以插入这些命令的集合,并且您的翻译线程可以从中获取其输入。这样,您可以(取决于 API 的工作方式)在同一个 HTTP 连接上处理一批翻译请求。

【讨论】:

    猜你喜欢
    • 2018-02-04
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 2019-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多