设计模式之------享元模式(Flyweight Pattern):内部状态(Instrinsic State)外部状态(Extrinsic State)
发布时间
阅读量:
阅读量
一、核心概念界定
①、什么是享元模式?
通过采用共享技术手段,能够高效地实现对众多细粒度对象的支持。
②、什么是细粒度对象?享元模式的两个状态?
在探讨细粒度对象的定义之前,有必要先了解享元对象所包含的两种状态类型:内部状态与外部状态。
享元对象中保持不变且不随环境变化的部分,被定义为内部状态;而那些会因环境变化而发生改变、无法被共享的部分则被称为外部状态。内部状态通常保存在ConcreteFlyweight对象内部,而外部状态则更适合由客户端对象进行存储或计算。当执行Flyweight对象的相关操作时,需要将外部状态作为参数传递给该对象。
在实际应用过程中,能够被共享的内部状态数量是有限的,因此享元对象通常被设计为体积较小的对象,其内部所包含的状态信息也相对较少。这类具有较少内部状态的对象,通常被称为细粒度对象。
③、解决什么问题(出现的背景)?
面向对象技术能够有效应对一些灵活性与扩展性方面的挑战,然而在多数情形下,往往需要在系统内部新增多个类与对象。一旦对象的数量达到一定规模,将会引发运行成本激增,进而造成性能降低、内存溢出等不良后果。为应对上述问题,享元模式应运而生。该模式通过提取其中共通的部分加以抽象化处理,当遇到相同的业务请求时,直接调用内存中已存在的对象,从而避免重复创建新对象的过程。
④、如何解决?
全部评论 (0)
还没有任何评论哟~
