gpt4 book ai didi

java - 享元模式中描述的内在状态和外在状态有什么区别?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:05:07 24 4
gpt4 key购买 nike

摘自FlyWeight Pattern 里面的章节Gang of Four FlyWeight 模式适用于当大多数对象状态可以成为外部状态时

外部状态 是什么意思?我感觉这种模式用于共享对象。如果要共享对象,那么该对象怎么可能有任何状态呢?

最佳答案

让我们以文字处理器为例:

文字处理器处理字符对象。字符对象的状态是字符内容、字体、样式、位置等(就字处理器而言)。不同的文档使用不同的字符实例。假设我们只处理 a-z 字符,不同的文档使用 a-z 池中的字母,但可能应用不同的字体/样式。因此,如果我们将字符的内容与字体/样式分开,我们就可以共享这些字符,这是有道理的,因为与使用的不同字符实例相比,不同类型的字符总数更少(在我们的例子中为 26 个,否则为常数)在不同的文档中。共享这些字符实例意味着明智地共享字符实例内容,并将字体/样式等上下文应用到这些字符的外部。字符内容是内在状态,字体/样式是外在状态。在上述示例中,将状态分为内在状态和外在状态可节省大量存储空间。

关于java - 享元模式中描述的内在状态和外在状态有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14425671/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com