Loading [MathJax]/jax/output/CommonHTML/config.js
社区首页 >问答首页 >GWT活动/地点应该是单例还是原型?

GWT活动/地点应该是单例还是原型?
EN

Stack Overflow用户
提问于 2012-11-23 11:34:26
回答 2查看 881关注 0票数 1

这两者(性能和其他方面)有什么不同:

代码语言:javascript
代码运行次数:0
复制
public class MyPlaceMapper implements PlaceHistoryMapper {
    @Override
    public String getToken(Place place) {
        if(place instanceof HomePlace)
            return "home";
        else
            return null;
    }

    @Override
    public Place getPlace(String token) {
        if(token.equals("home"))
            return new HomePlace();
        else
            return null;
    }
}

和:

代码语言:javascript
代码运行次数:0
复制
public class MyPlaceMapper implements PlaceHistoryMapper {
    // Singleton HomePlace to inject and reuse over and over again
    private HomePlace homePlace;

    // Getter/setter for homePlace...

    @Override
    public String getToken(Place place) {
        if(place instanceof HomePlace)
            return "home";
        else
            return null;
    }

    @Override
    public Place getPlace(String token) {
        if(token.equals("home"))
            return homePlace;
        else
            return null;
    }
}

换句话说,如果我一遍又一遍地重复使用相同的“单例”Place,还是每次请求时都实例化一个新的and,有什么区别呢?

另外,从ActivityMapper内部对Activity也提出了同样的问题。再次感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-23 13:54:48

经验法则:位置应该是不变的。考虑到这一点,只有当一个单独的位置没有附加数据时,才能使用该位置(如您的HomePlace示例所示)。因为places是如此轻量级,所以使用单例与创建新实例之间的关系可以忽略不计。

对于活动来说,这是一个完全不同的故事,因为它们不是值对象。

使用单例活动意味着什么?

  • 你必须清除onStoponCancel中的状态,否则前一次使用活动的状态可能会泄露到以后的使用中。虽然它在某些情况下很有用,但我认为最好保持缓存行为的分离(根据定义,concerns).
  • singletons的分离是在应用程序的生命周期内保存在内存中的,即使是用户只能看到/使用一次的缓存行为)。例如,Groups的欢迎屏幕很可能在每次应用程序运行时只出现一次,那么为什么要将其保留在内存中?
  • 如果您在两个都映射到同一活动的位置之间导航,该活动将不会重新启动(这是ActivityMapper的一个功能),因此您必须以某种方式向该活动发出信号,表明该位置已更改(当然,如果需要)。这可以在ActivityMapper中完成,也可以通过让活动监听PlaceChangeEvents.

来完成

如果你使用MVP (将视图从活动中分离出来),活动通常是轻量级的,所以使用短暂的活动可以让你从上面的事情中解脱出来,确保你清除了onStoponCancel中的所有东西,并告诉活动位置已经改变,总体上让事情变得更简单:活动被创建,然后启动,然后被取消或停止,它消失了,准备被垃圾回收。如果您需要对某些数据或计算结果进行缓存,那么请使用所有活动实例都将共享的显式缓存对象;这会使事情变得更加清晰。

关于MVP和视图生命周期的一个附注:视图(窗口小部件)通常是重量级的,所以对于经常使用的窗口小部件,您可能希望将其设置为单例。在这种情况下,您的活动必须清除视图的状态(字段值等)在它的start方法(或者可能是onStoponCancel)中,以某种方式击败了短暂活动的使用。在这里,视图的缓存(您可以考虑不使用单例,而是在内存中保留实例一段时间,并在延迟后将其逐出)应该被视为优化,其中构造新视图的成本比在活动开始时清除它的成本要高得多。这是一种权衡。

我处理MVP的方法是视图本身没有状态,也就是说,展示者实际上控制着视图应该显示/知道什么等等,所以在start上清除视图是流程的一部分:展示者(在许多情况下是活动)知道它处于什么状态,并且它在视图中反映该状态;start是赋予它对视图的控制权的时间。在GWT testing best practices会议的谷歌I/O2010期间,谷歌在制作Wave中描述了这种方法。

票数 6
EN

Stack Overflow用户

发布于 2013-03-08 20:35:24

托马斯回答得很好。只是为了添加更多信息。

您可以决定覆盖google提供的对象的默认实现。例如,您可以决定编写自己的活动映射器,该映射器将始终返回给定类型的场所的相同活动实例。正如托马斯所说,这个地方并不是一个真正重要的物体。重要的是通过活动映射器与该位置链接的活动。尽管如此,您可能会遇到生命周期问题,并且编写启动和停止方法的代码将非常困难。

您可能希望对活动管理器进行重新编码,并将更新方法添加到模式中,以刷新现有活动(如果这是您想要执行的操作

问问自己,当在浏览器中向前或向后按键时,应用程序应该如何工作。You can find some more details in an article I wrote about Activities and Places here.

希望这能有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13528268

复制
相关文章
JS文字转语音TTS
周末写的一个Vue网页智力游戏埋了发音彩蛋,分享下发音代码 http://linwancen.gitee.io/vantgames 百度不支持日文片假名,要是有支持日文片假名的免费引擎欢迎推荐 src/util/speak.js
林万程
2021/01/13
10.1K0
乐鑫语音之文字转语音(TTS)
今天,我们来研究乐鑫的语音助手框架ESP-Skainet其中的中文语音合成的例程。
启明智显
2022/05/30
5.8K0
乐鑫语音之文字转语音(TTS)
语音合成(Text to Speech | TTS)
做个比较,当机器的“脑子”里想到了一段内容时,或者是看到了一段话时,知道哪些字应该怎么读:
easyAI
2019/12/18
4.1K0
语音合成(Text to Speech | TTS)
学习|Android使用TTS语音合成
所谓活到老,学到老,本篇开始我写的Android代码尽量都转为Android指定的官方语言Kotlin,一是技多不压身,二是Kotlin的语法与我接触的第一门开发语言Delphi有点像,学起来也不太难,所以直接在代码中开始使用才能掌握的更快。
Vaccae
2019/12/11
4.2K0
linux 嵌入式 tts引擎_语音合成(TTS)的概念和分类[通俗易懂]
智能音箱在ASR(语音识别)以及NLP自然语义处理常用框架 – 兔尔摩斯的文章 – 知乎
全栈程序员站长
2022/08/03
4K0
linux 嵌入式 tts引擎_语音合成(TTS)的概念和分类[通俗易懂]
TTS Text-to-speech(文字转语音)服务
官网链接:Speech Studio - Microsoft Azure (https://speech.azure.cn/audiocontentcreation)
红目香薰
2022/11/29
3.4K0
TTS Text-to-speech(文字转语音)服务
腾讯云流式TTS语音合成客户端实现
接入文档链接:https://cloud.tencent.com/document/api/441/19499
用户1530353
2019/08/28
9.3K4
科大讯飞和Tizen-TTS语音合成引擎
     最近在做一个文本转语音TTS(Text to Speech)的第三方软件封装,使用的是国内语音技术龙头安徽科大讯飞公司提供的离线引擎AiSound5.0,主要用于汽车导航用途。科大讯飞还提供了AiTalk用于语音识别,AiWrite用于手写识别服务等。另外还有针对6种平台的SDK和开发示例。
ccf19881030
2019/04/24
14.4K0
科大讯飞和Tizen-TTS语音合成引擎
B4A TTS使用小米"小爱同学语音引擎"进行文字转语音
TTS是Text To Speech的缩写,即“从文本到语音”,是人机对话的一部分,让机器能够说话。
办公魔盒
2021/06/25
12.7K0
B4A TTS使用小米"小爱同学语音引擎"进行文字转语音
口播神器,基于Edge,微软TTS(text-to-speech)文字转语音免费开源库edge-tts语音合成实践(Python3.10)
    不能否认,微软Azure在TTS(text-to-speech文字转语音)这个人工智能细分领域的影响力是统治级的,一如ChatGPT在NLP领域的随心所欲,予取予求。君不见几乎所有的抖音营销号口播均采用微软的语音合成技术,其影响力由此可见一斑,仅有的白璧微瑕之处就是价格略高,虽然国内也可以使用科大讯飞语音合成进行平替,但我们只想要最好的那一个,本次我们使用免费的开源库edge-tts来实现文本转语音操作,薅微软edge的羊毛。
用户9127725
2023/03/09
4.4K0
口播神器,基于Edge,微软TTS(text-to-speech)文字转语音免费开源库edge-tts语音合成实践(Python3.10)
智能语音机器人小知识(5)--什么是TTS技术?
TTS是Text To Speech的缩写,即“从文本到语音”,是人机对话的一部分,让机器能够说话。
思谱云汇
2019/05/24
3.3K0
智能语音机器人小知识(5)--什么是TTS技术?
Python:TTS语音合成技术,市场各大平台对比以及实现
前景提要:在线的实时合成TTS技术,巴拉巴拉... 此处省略3千字 市场的TTS平台:讯飞语音,百度智能语音开放平台,阿里云,腾讯云,思必驰,捷通华声(灵云)等。
Python疯子
2019/03/15
4K1
使用科大讯飞TTS自定义彩虹屁语音包
彩虹屁插件红了后,你是否想生成定义语音包呢?本文给出一个解决方案,使用科大讯飞的TTS生成彩虹屁语音包,你可以完全自定义文本,自定义发音人哦!
JadePeng
2020/07/01
2.4K0
使用科大讯飞TTS自定义彩虹屁语音包
win7 TTS补丁-可修复XP,Win7系统下不能使用TTS语音引擎的问题
TTS语音修复可修复XP,Win7系统下不能使用TTS语音引擎的问题,精简版Win7,XP,尤其从网上下载的ghost版本的系统,TTS语音引擎多数被阉割,导致很多语音程序无法进行语音朗读。从Microsoft Speech SDK 5.1中提取打包而成。安装此程序即可修复。
WindCoder
2018/09/20
5.1K0
语音合成(TTS)技术原理简介:如何一步步将文字变成语音
上一篇文章的留言中,薇薇同学提到了语音合成技术,这篇文章尝试对语音合成技术的技术原理进行介绍。
用户7623498
2020/08/04
10.7K0
语音合成(TTS)技术原理简介:如何一步步将文字变成语音
给wordpress文章内容加上TTS语音朗读纯代码优化版
关于为什么给wordpress文章内容加上TTS语音朗读功能的原因是因为我发现很多人没办法看完整篇文章,有的只是看看给wordpress文章内容加上TTS语音朗读纯代码优化版标题就马上去拿资源或者评论,那这个朗读完全可以让你边做其他事情,边听完文章。
于飞云计算
2019/07/02
2.8K0
Tacotron2、GST、Glow-TTS、Flow-TTS…你都掌握了吗?一文总结语音合成必备经典模型(二)
机器之心专栏 本专栏由机器之心SOTA!模型资源站出品,每周日于机器之心公众号持续更新。 本专栏将逐一盘点自然语言处理、计算机视觉等领域下的常见任务,并对在这些任务上取得过 SOTA 的经典模型逐一详解。前往 SOTA!模型资源站(sota.jiqizhixin.com)即可获取本文中包含的模型实现代码、预训练模型及 API 等资源。 本文将分 2 期进行连载,共介绍 19 个在语音合成任务上曾取得 SOTA 的经典模型。 第 1 期:BLSTM-RNN、WaveNet、SampleRNN、Char2Wav
机器之心
2023/03/29
3.5K0
Tacotron2、GST、Glow-TTS、Flow-TTS…你都掌握了吗?一文总结语音合成必备经典模型(二)
业界 | 带有韵律的合成语音:谷歌展示基于Tacotron的新型TTS方法
选自Google Blog 作者:Yuxuan Wang、RJ Skerry-Ryan 机器之心编译 参与:黄小天、李亚洲、李泽南 神经网络文本转语音(TTS)是自然语言处理领域的重要方向,很多谷歌的产品(如 Google Assistant、搜索、地图)都内置了这样的功能。目前的系统已经可以产生接近人声的语音,但仍然显得不够自然。在最近发表的两篇论文中,谷歌为自己的 Tacotron 系统加入了对韵律学的建模,以帮助人们利用自己的声音进行个性化语音合成。 最近,谷歌在基于神经网络的文本转语音(TTS)的研
机器之心
2018/05/08
1.8K0
业界 | 带有韵律的合成语音:谷歌展示基于Tacotron的新型TTS方法
语音合成到了跳变点?深度神经网络变革TTS最新研究汇总
机器之心原创 作者:李亚洲 近年来,随着深度神经网络的应用,计算机理解自然语音能力有了彻底革新,例如深度神经网络在语音识别、机器翻译中的应用。但是,使用计算机生成语音(语音合成(speech synthesis)或文本转语音(TTS)),仍在很大程度上基于所谓的拼接 TTS(concatenative TTS)。而这种传统的方法所合成语音的自然度、舒适度都有很大的缺陷。深度神经网络,能否像促进语音识别的发展一样推进语音合成的进步?这也成为了人工智能领域研究的课题之一。 2016 年,DeepMind 提
机器之心
2018/05/07
1.2K0
语音合成到了跳变点?深度神经网络变革TTS最新研究汇总
点击加载更多

相似问题

Android TTS语音

11

TTS语音识别

11

TTS语音数据选择

12

Watson TTS语音选择

12

容器化Azure TTS支持列表TTS语音

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文