享元模式

mac2022-06-30  27

对象的结构模式!

定义

以共享的方式高效地支持大量的细粒度对象。

适用场景

下列条件都满足时,考虑使用享元模式

一个系统中有大量对象这些对象耗费大量的内存对象的属性可以分为有状态和无状态的两类把这些对象所有的有状态属性去除后,为同一个无状态对象

实现方式

将可以共享的状态和不可共享的状态区分开,并将不可共享的状态从类里去除为这个类的创建提供一个工厂,进行创建控制

状态外部化

将状态移除享元对象后,对象的行为仍然需要这些状态,即状态剥离后无法正常工作!

解决办法

将不能剥离的行为和状态移动到客户端;(堆积在客户端,不利于复用和维护)由客户端提供不可共享的状态,作为参数传递给享元对象。(改写方法的参数表,传递)

优点和缺点

优点

它大幅度地降低了内存中对象的数量

缺点

使得系统更加复杂,为了使得对象共享,将一些状态外部化,让程序逻辑复杂读取外部状态使得运行时间稍微变长。
最新回复(0)