电商网站备案流程,wordpress 文件调用规则,合肥网站建设合肥网站制作,百度旗下的所有产品结构性模式的名称、定义、学习难度和使用频率如下表所示#xff1a; 1.如何理解享元模式 当一个软件系统在运行时产生的对象数量太多#xff0c;将导致运行代价过高#xff0c;带来系统性能下降等问题。 在享元模式中#xff0c;存储这些共享实例对象的地方称为享元池 1.如何理解享元模式 当一个软件系统在运行时产生的对象数量太多将导致运行代价过高带来系统性能下降等问题。 在享元模式中存储这些共享实例对象的地方称为享元池Flyweight Pool。可以针对每个不同的字符创建一个享元对象将其放在享元池中需要时再从享元池取出。如图 享元模式以共享的方式高效地支持大量细粒度对象的重用。享元对象能做到共享的关键是区分了内部状态Intrinsic State和外部状态Extrinsic State。 内部状态是存储在享元对象内部并且不会随环境改变而改变的状态内部状态可以共享。例如字符的内容不会随外部环境的变化而变化无论在任何环境下字符“a”始终是“a”都不会变成“b”。 外部状态是随环境改变而改变的、不可以共享的状态。享元对象的外部状态通常由客户端保存并在享元对象被创建之后需要使用的时候再传入享元对象内部。一个外部状态与另一个外部状态之间是相互独立的。如字符的颜色可以在不同的地方有不同的颜色例如有的“a”是红色的有的“a”是绿色的字符的大小也是如此有的“a”是五号字有的“a”是四号字。 享元模式Flyweight Pattern运用共享技术有效地支持大量细粒度对象的复用。系统只使用少量的对象而这些对象都很相似状态变化很小可以实现对象的多次复用。 当系统中存在大量相同或者相似的对象时享元模式是一种较好的解决方案。它通过共享技术实现相同或相似的细粒度对象的复用从而节约了内存空间提高了系统性能。 2.如何理解单纯享元模式和复合享元模式? 单纯享元 享元对象是不可分解的它们具有单一、不可分割的内在状态并且可以被多个外部对象共享。 例如在一个游戏中各种颜色的小方块是享元对象。每个小方块的颜色就是它的内在状态而且小方块本身不能再被分解为更小的部分。多个游戏场景可以共享这些具有特定颜色的小方块。 复合享元模式 由多个单纯享元对象组合而成的复合对象。 例如在一个图形设计软件中一个复杂的图标可能由多个基本图形元素如线段、圆形、三角形等单纯享元对象组成。这些基本图形元素可以被多个图标共享而图标本身就是一个复合享元对象。 单纯享元模式相对简单主要处理单一、不可分割的享元对象。而复合享元模式更复杂一些需要处理享元对象的组合和共享。 3.关于享元模式的几点补充 享元模式通常需要和其他模式一起联用几种常见的联用方式如下 在享元模式的享元工厂类中通常提供一个静态的工厂方法用于返回享元对象使用简单工厂模式来生成享元对象。 在一个系统中通常只有唯一一个享元工厂因此可以使用单例模式进行享元工厂类的设计。 4.享元模式的优缺点是什么 优点 减少内存使用通过共享相同或相似的对象大大减少了系统中对象的数量从而降低了内存消耗。 提高性能由于减少了对象的创建和销毁提高了系统的性能。 增强系统的可扩展性可以方便地添加新的享元对象或修改现有享元对象的共享方式而对系统的其他部分影响较小。 缺点 适用场景有限并非所有情况都适合使用享元模式如果对象的共享率不高可能无法带来明显的性能提升反而增加了系统的复杂性。 增加系统复杂性需要额外的逻辑来管理享元对象的共享和获取增加了代码的复杂性和理解难度。 5.享元模式适用场景有哪些 系统中存在大量相似的对象例如在一个文本编辑软件中大量重复出现的字符对象可以使用享元模式来共享。 对象创建和销毁的成本较高如果创建一个对象需要消耗较多的资源如时间、内存等通过共享已有的对象可以避免重复创建。 需要缓存大量细粒度对象比如在一个网页中相同样式的小图标可以被共享以减少内存占用。 以上内容为根据书本内容配合搜索引擎整理得来目的是为了学习要是有侵权的情况发生请联系我我会立即予以删除谢谢 一起成长人生是马拉松可以跑得慢但一定要在路上。