Java享元模式(FlyWeight)

享元模式

??内存属于稀缺资源,不要随便浪费。如果有很多个完全相同或相似的
对象,我们可以通过享元模式,节省内存.

核心:

  1. 享元模式以共享的方式高效地支持大量细粒度对象的重用。
  2. 享元对象能做到共享的关键是区分了内部状态和外部状态。
    ? 内部状态:可以共享,不会随环境变化而改变
    ? 外部状态:不可以共享,会随环境变化而改变

案例

围棋软件设计
每个围棋棋子都是一个对象,
有如下属性:

享元模式实现:

  1. FlyweightFactory享元工厂类
    ? 创建并管理享元对象,享元池一般设计成键值对
  2. FlyWeight抽象享元类
    ? 通常是一个接口或抽象类,声明公共方法,这些方法可以向外界提供对象
    的内部状态,设置外部状态。
  3. ConcreteFlyWeight具体享元类
    ? 为内部状态提供成员变量进行存储
  4. UnsharedConcreteFlyWeight非共享享元类
    ? 不能被共享的子类可以设计为非共享享元类

享元模式实现的UML图

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年2月11日
下一篇 2019年2月11日

相关推荐