微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

web享元模式怎么理解

这篇文章主要讲解了“web享元模式怎么理解”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“web享元模式怎么理解”吧!

意图


通过共享的方式避免在不同对象之间重复构建相同的数据或对象。

动机

面向对象设计技术的应用使程序员在处理复杂系统时,可以将系统中的个体看作一个一个独立的对象,从而大大降低了处理的复杂性。但是这种处理有时候也会带来一些问题。

例如,最近经常可以看到使用大量的无人机在空中摆造型的例子,几千个无人机在空中摆出各种图案,场景那叫一个壮观。我们今天就以无人机的通讯为例说明享元模式。首先提两个假设:

  1. 无人机数量非常巨大,以至于需要多个品牌的无人机合作演出。

  2. 不同厂家生产的无人机可以接受的命令的种类,形式,通讯方式都会有所不同。

为了能够以同样的方式控制这些无人机,我们可以设计一个通讯协议的转换类,利用者发出的指令经过这个转换类的翻译之后,转换为各个厂家,型号使用的协议之后再发出。接下来只要为每台无人机准备好协议转换的数据即可。但是我们面对的是成千上万的无人机,为每台无人机准备这样数据就需要消耗大量的内存。

这个问题可以通过享元模式来解决。由于同一厂家,同一型号的无人机可以接受的命令的种类,形式,通讯方式完全一致,所以我们只要为每个厂家的每个型号提供唯一的一个转换模块就可以了。

每次需要使用Translator的时候,利用者调用以厂家和型号为参数,调用TranslatorFactory的GetTranslator方法,如果TranslatorFactory已经持有与厂家,型号相匹配的Translator则直接将其返回,如果没有则生成相应的Translator并返回。这样就保证了每个厂家,型号的无人机只会生成一个Translator,从而避免了内存空间的浪费。

感谢各位的阅读,以上就是“web享元模式怎么理解”的内容了,经过本文的学习后,相信大家对web享元模式怎么理解这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程之家,小编将为大家推送更多相关知识点的文章,欢迎关注!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐