一、享元模式基本介绍
享元模式也叫蝇量模式,运用共享技术有效地支持大量细粒度的对象 。它常用于系统底层开发,解决系统的性能问题。像数据库连接池,里面都是创建好的连接对象,在这些连接对象中,有我们需要的则直接拿来用,避免重复创建。如果没有我们需要的,则新创建一个 。
享元模式能够解决重复对象内存的浪费问题。当系统中有大量相似对象,可以创建缓冲池而不需要总是创建新对象。当需要对象时可以从缓冲池中拿,这样可以降低系统内存,同时提高效率 。享元模式经典的应用场景就是池技术,String常量池、数据库连接池、缓冲池等等都是享元模式的应用。享元模式是池技术的重要实现方式 。
二、享元模式原理
享元模式原理图如下所示:
说明:
1)FlyWeight:是抽象的享元角色,它是产品的抽象类,同时定义出对象的外部状态(频繁变化的对象)和内部状态(固定不变的状态)的接口或实现
2)ConcreteFlyWeight:是具体的享元角色,是具体的产品类,实现抽象角色定义的相关业务
3)UnshareConcreteFlyWeight: