享元模式
??内存属于稀缺资源,不要随便浪费。如果有很多个完全相同或相似的
对象,我们可以通过享元模式,节省内存.
核心:
- 享元模式以共享的方式高效地支持大量细粒度对象的重用。
- 享元对象能做到共享的关键是区分了内部状态和外部状态。
? 内部状态:可以共享,不会随环境变化而改变
? 外部状态:不可以共享,会随环境变化而改变
案例
围棋软件设计
每个围棋棋子都是一个对象,
有如下属性:
享元模式实现:
- FlyweightFactory享元工厂类
? 创建并管理享元对象,享元池一般设计成键值对 - FlyWeight抽象享元类
? 通常是一个接口或抽象类,声明公共方法,这些方法可以向外界提供对象
的内部状态,设置外部状态。 - ConcreteFlyWeight具体享元类
? 为内部状态提供成员变量进行存储 - UnsharedConcreteFlyWeight非共享享元类
? 不能被共享的子类可以设计为非共享享元类
享元模式实现的UML图
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!