ymkNK / ymkNK.github.io

Personal Blog
https://lllovol.com
2 stars 0 forks source link

设计模式-FlyWeight享元模式 #120

Open ymkNK opened 2 years ago

ymkNK commented 2 years ago

https://lllovol.com/p/2021/12/design-pattern-flyweight/

背景 大量创建对象的场景,会耗费大量的资源,使用享元模式能共享一些内部的状态。 定义 运用共享技术有效地支持大量细粒度对象的复用。系统只使用少量的对象,而这些对象都很相似,状态变化很小,可以实现对象的多次复用。由于享元模式要求能够共享的对象必须是细粒度对象,因此它又称为轻量级模式,它是一种对象结构型模式。 实现 定义一个享元的interface 定义一个享元的工厂 适用场景 系统有大量相似对象 需要缓冲池的场景 优缺点 优点 能够大大减少内存中对象的数量,内存中只保存一份相同或相似的对象,从而可以节约系统资源,提高系统性能。 享元模式的外部状态相对独立,而且不会影响其内部状态,从而使得享元对象可以在不同的环境中被共享。 缺点 享元模式使得系统更加复杂,需要分离出内部状态和外部状态,这使得程序的逻辑复杂化。 为了使对象可以共享,享元模式需要将享元对象的状态外部化,而读取外部状态使得运行时间变长。