场景:内存属于稀缺资源,不要随便浪费。如果有很多个相同或相似的对象,我们可以通过享元模式,节省内存。
核心:享元模式以共享的方式高效的支持大量细粒度对象的重用。
享元模式能做到共享的关键是区分了内部状态和外部状态
- 内部状态:可以共享,不会随环境变化而变化
- 外部状态:不可以共享,会随着环境变化而变化**
享元模式开发中的应用场景:
1.享元模式由于其共享的特性,可以在任何“池”中操作,比如线程池,数据库连接池。
2.Spring类的设计也是使用了享元模式
优点:
- 极大减少内存的数量,相同或相似中只存一份,极大的节约资源,提高系统性能
- 外部状态想对独立,不影响内部状态
缺点:
- 模式比较复杂,使程序逻辑复杂化
- 为了节省内存,共享了内部状态,分离出外部状态,而读取外部状态使运行时间变长。用时间换取了空间