类图
代码
Flywight
1 | abstract class Flyweight{ |
ConcreteFlyweight
1 | class Chess extends Flyweight{ |
UnsharedConcreteFlyweight
1 | class Coordinate{ |
FlywightFactory
1 | class ChessFactory{ |
测试类
1 | public class Main { |
运行结果
1 | flyweight.Chess@4926097b |
总结
概述
- 什么时候用享元模式
系统中有大量的对象,他们使系统的效率降低
这些对象的状态可以分离出所需要的内外两部分
数据库连接池就是标准的享元模式实现
优点
降低内存中对象的数量
缺点
享元模式分内蕴和外蕴(就是享元核心对象和不需要分享的对象),这两者之间划分不好的话,并不会减少对象数量,所以使用起来有一定局限性