我是一名非英语母语者,想更好地理解设计模式,我对这个命名模式的词源很感兴趣。这个命名的动机是什么? 据我所知,轻量级设计模式关注的是通过共享方式支持大量细粒度对象。 然而,我找到的有关“轻量级”这个词的定义指的是拳击中不到112磅的体重级别。 那么,为什么要用这种方式来命名这个模式呢? ...
据我所知,对象池是一种创建型模式,而享元是一种结构型模式,但实际上我不能看到它们之间有太大的区别。请问有人能向我解释一下它们之间的区别以及在实现中何时使用每个模式?
如果您有两个相等的字符串实例,它们在Java中将共享同一块内存。这在底层是如何实现的? 编辑:我的应用程序使用了大量的String对象,其中许多是相同的。最好的方法是利用Java String常量池,以避免创建自定义的轻量级实现?
目的: 本模式的目的是通过共享来支持一大批拥有部分内部状态相同,但其余状态可变的对象。 对象可以通过静态字段共享状态。 使用享元模式共享内部状态与使用静态字段有何区别? 享元通过其工厂提供的对象池是享元真正关注的吗?
我需要找出原型模式和享元模式之间的一些区别。我知道最基本的区别在于前者进行深度复制,而后者使用共享对象。我的讲师说还有更多的不同之处。 有人知道其他的区别吗?
Java的String内存池的实现是否遵循享元模式? 我对此有疑问是因为在Intern中没有外在状态。在GoF中,我读到应该在内在和外在状态之间保持适当的平衡。但在intern中,一切都是内在的。 或者我们可以说并没有关于属性的严格规定,只需共享对象以减少内存即可称之为享元。 请帮助我理解。
我似乎陷入了享元模式的思维僵局。 首先,假设我有一个可丢弃类型 DisposableFiddle 和一个工厂 FiddleFactory:public interface DisposableFiddle : IDisposable { // Implements IDisposab...
从四人帮中的FlyWeight模式章节来看,当大多数对象状态可以变为外在状态时,FlyWeight模式是适用的。 外在状态是什么意思?我感觉这个模式用于对象共享。如果对象要共享,那么它怎么可能有任何状态呢?
我正在尝试做以下事情:boost::unordered_map<boost::flyweight<std::string>, boost::flyweight<std::string> > map; boost::flyweight<...
我的应用程序是多线程且涉及大量字符串处理。我们遇到了过度的内存消耗问题,并且分析表明这是由于字符串数据造成的。我认为使用某种飞行权重模式实现甚至缓存(我知道字符串经常被复制,尽管在这方面我没有任何硬数据)将极大地受益于内存消耗。 我查看了Java常量池和String.intern,但似乎会引...