问题标签 [flyweight-pattern]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
959 浏览

java - 状态和 FlyWeight 模式

任何人都可以分享将状态模式享元模式一起使用的示例(享元模式用于创建状态对象以节省内存)吗?

更新:如何使用状态和 fw 模式的组合?

0 投票
3 回答
5256 浏览

design-patterns - 享元与对象池模式:每种模式何时有用?

据我所知,对象池是一种创建模式,享元是一种结构模式,但实际上我看不出两者之间有太大区别。有人可以向我解释其中的区别以及每种方法在实现中何时有用吗?

0 投票
1 回答
195 浏览

c++ - 如何防止复制享元对象?

我正在学习使用 key_value flyweights,我编写了以下代码:

当我运行它时,我得到了以下输出:

我想避免额外的副本,因为我真正的 Foo 复制起来非常昂贵。这也是我使用轻量级的主要原因。那么,有没有办法避免多余的副本?

0 投票
2 回答
718 浏览

c++ - 字符串到字符串转换的flyweights:更好的性能选项

所以我有一个字符串类型的轻量级:

我想将这个实例推送到它们的向量中,但是天真的方法行不通:

所以我添加了一个临时构造函数:

我的问题是:考虑到语言的限制,这种方法是最优的吗?以其他方式实现这一点有什么好处,例如,通过提供静态转换运算符?我不认为通过非显式构造函数进行隐式转换是一个有效的选项,因为这需要修改boost::flyweight模板

0 投票
1 回答
945 浏览

c++ - boost::flyweight 是否进行引用计数?

我一直在阅读文档,boost::flyweight但我没有看到任何提及释放或引用计数策略的内容。基本上,享元对象的行为应该类似于不同值的存储库,但不清楚不再使用不同值时会发生什么。

是否已经支持?可以通过一些自定义工厂启用吗?

0 投票
6 回答
5394 浏览

java - Java 的 String Intern 是轻量级的吗?

Java的String内存池的实现是否遵循flyweight模式?

为什么我有这个疑问是,我看到实习生中没有外在状态。在 GoF 中,我读到应该在内在和外在状态之间取得适当的平衡。但在实习生中,一切都是内在的。

或者我们应该说对于属性没有严格的规则,只是共享对象以减少内存就足以称其为享元。

请帮我理解。

0 投票
2 回答
226 浏览

ajax - Handling forms with many fields

I have a very large webform that is the center of my Yii web application. The form actually consists of multiple html form elements, many of which are loaded via AJAX as needed.

Because of the form's size and complexity, having multiple save or submit buttons isn't really feasible. I would rather update each field in the database as it is edited by asynchrously AJAXing the new value to the server using jeditable or jeditable-like functionality.

Has anyone done anything like this? In theory I'm thinking I could set up an AJAX endpoint and have each control pass in its name, its new value, and the CRUD operation you want to perform. Then the endpoint can route the request appropriately based on some kind of map and return the product. It just seems like someone has to have solved this problem before and I don't want to waste hours reinventing the wheel.

Your thoughts on architecture/implementation are appreciated, thanks for your time.

0 投票
2 回答
284 浏览

java - Java Swing:享元与新窗口

我正在开发一个新的应用程序,我将同时打开一些窗口。我目前正在尝试设计 GUI,但我正在为两种选择而苦苦挣扎:

  1. 我可以使用侧面导航面板并使用页面中心来显示每个面板的内容。这些面板将根据享元模式存储,我会在单击导航按钮时隐藏/显示它们(以便在隐藏时按原样保存内容,例如用户注册表单)。

  2. 我可以使用在其上显示菜单的首页并使用弹出窗口/新窗口来显示内容。这些可以关闭/最小化等)。

我的问题是:如果所有面板都存储在我的享元模式中怎么办?它会对性能产生巨大影响,还是在存储 15 个 JPanel 时仍能顺利运行?(当然,这些 JPanel 有时会包含很多内容,例如表单等)。

您认为最好的易于使用/性能选择是什么?

谢谢 :)

0 投票
3 回答
6040 浏览

python - Python写时复制行为

我正在解决一个问题,我正在实例化一个对象的许多实例。大多数情况下,实例化的对象是相同的。为了减少内存开销,我想让所有相同的对象指向同一个地址。但是,当我修改对象时,我希望创建一个新实例——本质上是写时复制行为。在 Python 中实现这一目标的最佳方法是什么?

享元模式接近。一个例子(来自http://codesnipers.com/?q=python-flyweights):

其行为如下:

期望的行为是:

更新:我遇到了享元模式,它似乎几乎符合要求。但是,我对其他方法持开放态度。

0 投票
3 回答
756 浏览

design-patterns - 享元设计模式如何最小化内存

享元设计模式如何最小化使用的内存?对我来说,它看起来不是创建对象,而是只是将对象持有的数据外部化,这意味着使用的内存是相同的。

我错过了什么吗?