使用共享对象可以有效的支持大量的细粒度对象。
应用场景
主要目的是实现对象的共享,即共享池,当系统中对象多的时候可以减少内存的开销,通常与工厂模式一起使用。例如:缓存,对象池;Android中: Message.obtain通过重用Message对象来避免大量的Message对象被频繁的创建和销毁。

FlyWeightFactory负责创建和管理享元单元,当一个客户端请求时,工厂需要检查当前对象池中是否有符合条件的对象,如果有,就返回已经存在的对象,如果没有,则创建一个新对象,FlyWeight是超类。

享元模式的主要角色有如下:
-
抽象享元角色(Flyweight):是所有的具体享元类的基类,为具体享元规范需要实现的公共接口,非享元的外部状态以参数的形式通过方法传入。
-
具体享元(Concrete Flyweight)角色:实现抽象享元角色中所规定的接口。
-
非享元(Unsharable Flyweight)角色:是不可以共享的外部状态,它以参数的形式注入具体享元的相关方法中。
-
<
享元模式深入解析与应用实例

享元模式是一种用于减少大量相似对象创建的技术,通过共享实现对象的复用,从而降低内存开销。通常与工厂模式结合使用,如Android中的Message.obtain。核心角色包括抽象享元、具体享元、非享元和享元工厂。具体享元在系统中可共享,非享元作为外部状态传递。SQLiteCompiledSql在Android数据库操作中体现了享元模式的高效性能。
最低0.47元/天 解锁文章
366

被折叠的 条评论
为什么被折叠?



