使用场景:
对象可以复用/共享的情况,只new一次,然后将对象实例保存起来,下次需要使用的时候,先查看该对象是否已经存在,过存在则直接返回,不存在再new。
类关系图
一般有一个FlyweightFactory负责创建并存储需要的Flyweight对象,核心代码如下:
Flyweight flyweight = pool.get(name);
if(flyweight == null) {
flyweight = new Flyweight(name);
pool.put(flyweight);
}
Factory一般使用singleton。
模式比价简单,使用场景比较明确。