【设计模式】享元模式(Flyweight Pattern)

1.    模式结构
 
2.    角色
(1)    Flyweight(抽象享元类)
规定享元类的公共方法,比如提供享元的內部状态,设置享元的外部状态
(2)    ConcreteFlyweight(具体享元类)
intrinsicState内部状态:成员变量,不随环境改变而改变,可以共享
extrinsicState外部状态:局部变量,随环境改变而改变,不可以共享
模式中可以有多个具体享元类
(3)    UnsharedConcreteFlyweight(非共享具体享元类)
可以省略
不被共享,可以直接通过实例化构建
搭配组合模式时可以作为具体享元类的容器构件
(4)    FlyweightFactory(享元工厂类)
模式关键点在于工厂选择性返回享元
聚合一个享元池(可用键值对集合实现)
获取享元,当不存在时创建享元,当存在时返回享元
3.    单纯享元模式
省略非共享享元类
4.    复合享元模式
联用组合模式,非共享享元类作为共享享元类的容器构件
5.    与其他模式联用
用简单工厂模式来生成享元对象
享元工厂类可以使用单例模式进行设计
享元模式结合组合模式形成复合享元模式
6.    特点
极大减少内存中的对象,相同对象或相似对象只保留一份
7.    应用
JDK中的String类

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值