享元模式

分享

找到了一篇文章里面对享元模式的分析挺不错的:https://blog.csdn.net/justloveyou_/article/details/55045638。但是这里我想聊一些别的方面,关于我们实际用享元模式的思考。

举例说明

在我实际写业务代码时,发现自己很少去用到享元模式,主要有三方面因素:

  1. 并发编程告诉我们尽量少去共享实例,容易引发并发问题
  2. 实际写代码的过程中也很少遇到需要,因为内存的问题需要去考虑共享实例的情况
  3. 最后抽象出来享元角色,以及区分出内部状态和外部状态也是一个需要仔细考量的过程

反过来想,传统的使用Spring写的三层架构中的Service层,Spring就将我们写的Service初始化成了一个单例实例,而且Spring充当了工厂角色,Service Interface充当了Flyweight角色,ServiceImpl充当了Concrete Flyweight角色,而我们Service 方法的参数其实就是Unsharable Flyweight角色,只不过此场景不是细粒度对象的复用,而是大对象的复用。

如果感到快乐,你就拍拍手。