设计模式-- Flyweight

 

仓库?对象池?有些可以共享的在实际应用中需要反复构造的对象,我们可以在第一次需求构造时同时将其实体放在一个存储结构中,链表?数组?容器?map?随便!当第二次,第三次要用到一个对象时,到存储结构中查找,找到了就引用,找不到就创造,再放入存储器中。
感觉同时在模拟多个Singleton……但是,本质上是不同的,可能不是全局唯一的!
内蕴  由ConcreteFlyweight本身提供,作为一种内部属性,构造函数中传入
外蕴  查找到实体后,通过opertion操作添加自己的特性
class Flyweight
class ConcreteFlyweight : public Flyweight
operation: getinstrinsicstate

FlyweightFactory
attribute : vector<Flywieght*>
operation : get(key)
            {
                iter find(key);
                    if(true)
                        return *iter
                    else
                    {
                        Flywieght* fly= new ConcreteFlyweight(key);
                        push(fly);
                        return fly;
                    }
            }

key可作为内蕴,也可通过key查找到相应的产品后内部定义
fly->operation(外蕴)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值