FlyWeight - 享元模式
FlyWeight-享元模式
| Why | 顾名思义:用共享的方式高效地支持大量细粒度对象。 当系统中存在大量相似对象时,我们不希望为每个对象都重新分配内存。 所以我们把这些对象中可以共享的部分提取出来(内部状态) 而不共享的部分(外部状态)则由外部在使用时动态传入。 享元模式 = 抽象享元定义接口 + 具体享元保存共享状态 + 外部状态动态注入 + 工厂管理共享对象。 |
|||
|---|---|---|---|---|
| 两种状态 |
|
|||
| 主要角色 | ![]() |
|||
| 理解 | 比如你要下五子棋,棋子本身的属性除了颜色没什么不同 难道我们要下一个new一个吗? 并不,我们只需要new一黑一白, 剖解棋子:外部属性(位置)+内部属性(颜色) |
|||
| 要点 | 享元模式共享的是内部属性 享元共享的是“内部状态相同的对象”,内部状态不同就会创建新对象 |
|||
| 优缺点 | ![]() |
|||
Jdk Integer |
1 | <td><p>IntegerCache 就是享元工厂;</p> |

public final class Integer extends Number implements Comparable<Integer> {
// ⚡ 享元缓存范围:[-128, 127]
1 | <p>private static class IntegerCache {</p> |



