其他分享
首页 > 其他分享> > 享元模式 (Flyweight Pattern)

享元模式 (Flyweight Pattern)

作者:互联网

享元模式通过共享来支持对象的复用,减少资源的浪费。从享元池中获取想要的对象。

(1)类图

 

解释类图,共有四个类: 

 

左下角的白条中写的是:如果享元池中存在该对象则返回该对象,否则就创建一个新的对象放进享元池,再返回。

享元对象是用HashMap存储,构成享元池。

空心三角形+箭头指的是实现。

 

比如下棋程序,有黑白两种棋子,它们的形状、大小都一样,如果在每放置一枚棋子的时候就创建一个棋子对象,那么对性能就有所浪费。如果采用享元模式,享元池内只会存在黑棋子和白棋子两个元素。

 

内部状态和外部状态,还有非共享具体享元类,这些都看具体情况去设计。比如上面的下棋程序就没有用到这三者。

享元模式的核心在于享元池,能从享元池得到特定的对象元素。就像下棋程序那样,要找出对象之间这种特定的关系,这些对象很多都是相同或相似的,每次从享元池可以作为同一个对象拿出来。

String类就用到了享元模式,当字符串内容一致的时候,在享元池内就属于同一个对象,当字符串内容不一致的时候,在享元池内就分别存储于不同的对象。

 

标签:享元,享元池,池内,对象,Pattern,模式,棋子,Flyweight
来源: https://www.cnblogs.com/hanselhuang/p/16156053.html