NIUCLOUD是一款SaaS管理后台框架多应用插件+云编译。上千名开发者、服务商正在积极拥抱开发者生态。欢迎开发者们免费入驻。一起助力发展! 广告
| 享元设计模式 | | | --- | --- | 享元模式的目的是为了减少实例化大量的类时对内存的占用; 减少是不可能平白无故就减少了的; 主要是通过复用重复的类来实现; 用现在比较热的词叫共享; 就比如说现实生活中; 我们有 99 件尺寸为 L 和 1 件 XXL 的不同款式的男装需要请多少个模特? 回答 100 的同学肯定是家里有矿了; 省钱的方案是只请2个模特就够了; 其中 99 件 L 的需要一个 170cm 的模特; 剩下的 1 件 XXL 的需要 180cm 的模特; 咱们用代码来演示下; [TOC] 结构 Flyweight: 享元抽象类 ConcreteFlyweight:实现 Flyweight 接口的可以共享的具体享元类 UnsharedConcreteFlyweight: 非共享具体享元类 FlyweightFactory: 用于创建和管理具体的享元对象的工厂; [TOC] 优缺点 这样的特性使得享元模式可以运用于数据库连接池以及缓冲池等场景; 但是享元模式也有缺点; 一个是增加了代码的复杂度; 上面代码中就把模特分成了可以共享的通用享元类; 和有无法共享的代码的非共享享元类; 再个是需要有一个享元工厂; 这个工厂往复杂了写就是一个连接池了; 当类比较少的时候反而为增加内存的占用了; [TOC] 个人见解 享元设计模式是有些需要重复使用的类使用,需要一个抽象类父类,然后操作类进行集成,再创建一个享元的工厂,这个工厂处理需要共享的方法 [TOC] 具体的看【白俊遥】的享元设计模式 代码在 /php.com/core/DesignPatterns/Flyweight