享元模式 (Flyweight Pattern)

        文档地址:《设计模式之禅》​​​​​​​

        切入故事: 内存溢出, 司空见惯

        定义: Use sharing to support large numbers of fine-grained objects efficiently.(使用共享对象可有效地支持大量的细粒度的对象。 )

        通用类图:

                

                ● Flyweight——抽象享元角色

                        它简单地说就是一个产品的抽象类, 同时定义出对象的外部状态和内部状态的接口或实现。

                ● ConcreteFlyweight——具体享元角色

                        具体的一个产品类, 实现抽象角色定义的业务。 该角色中需要注意的是内部状态处理应该与环境无关, 不应该出现一个操作改变了内部状态, 同时修改了外部状态, 这是绝对不允许的。

                ● unsharedConcreteFlyweight——不可共享的享元角色

                        不存在外部状态或者安全要求(如线程安全) 不能够使用共享技术的对象, 该对象一般不会出现在享元工厂中。

                ● FlyweightFactory——享元工厂

                        职责非常简单, 就是构造一个池容器, 同时提供从池中获得对象的方法。

        优点:

                 减少应用程序创建的对象, 降低程序内存的占用, 增强程序的性能

        缺点: 

                提高了系统复杂性, 需要分离出外部状态和内部状态, 而且外部状态具有固化特性, 不应该随内部状态改变而改变

        使用场景:

                ● 系统中存在大量的相似对象。

                ● 细粒度的对象都具备较接近的外部状态, 而且内部状态与环境无关, 也就是说对象没有特定身份。

                ● 需要缓冲池的场景。

        

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值