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

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

 

你可能感兴趣的:(设计模式,设计模式,享元模式,p2p)