知识卡片
享元模式的优缺点与适用场景
内容
[[享元模式的定义、内外部状态与四个角色]]优点是大幅减少对象数量、降内存提性能;代价 是复杂性提升——需拆分内外部状态,外部状态一旦确定须固化,不能随业务执行被修改,否则 共享池数据混乱。适用场景:大量相似对象;细粒度对象外部状态接近、内部状态与环境无关; 需缓冲池的场景。发散:外部状态须固化不可变,恰与[[final成员变量会阻断深拷贝实现]]中 final阻碍深拷贝相反——这里该用final保护外部状态防污染。
参考来源
- 位置:《设计模式之禅(第2版)》第28章《享元模式》(源文件:_epub-src/text/part0128.html)
- 结论依据:原文说明"享元模式是一个非常简单的模式,它可以大大减少应用程序创建的对象……但它同时也提高了系统复杂性,需要分离出外部状态和内部状态,而且外部状态具有固化特性,不应该随内部状态改变而改变",并列出三类使用场景。
- 原始内容:它可以大大减少应用程序创建的对象,降低程序内存的占用,增强程序的性能,但它同时也提高了系统复杂性……外部状态具有固化特性,不应该随内部状态改变而改变……系统中存在大量的相似对象……细粒度的对象都具备较接近的外部状态,而且内部状态与环境无关。