设计模式学习笔记三十六、享元模式了解

一、问题

1、小型的外包项目,给客户做一个产品展示网站,客户A的朋友感觉效果不错,也希望做这样的产品展示网站,但是要求有些不同。

2、有客户要求以新闻的形式发布

3、有客户要求以博文的形式发布

4、有客户希望以公众号的形式发布

二、享元介绍

1、享元模式(Flyweight Pattern) 也叫蝇量模式,运用共享技术有效的支持大量细粒度的对象。

2、常用与系统底层开发,解决系统的性能问题,像数据库连接池,里面都是创建好的连接对象,在这些对象中有我们需要的则直接拿来用,避免重复创建,如果没有我们需要的则创建一个。

3、享元模式能够解决重复对象的内存浪费的问题,当系统中有大量相似对象,可以冲缓冲池里那,这样可以降低系统内存,同时提高效率。

4、应用场景:String 常量池、数据库连接池、缓冲池。

三、内部状态、外部状态

1、内部状态:值对象共享出来的信息,存储在享元对象内部且不会随环境的改变而改变

2、外部状态:指对象得以依赖的一个标记,是随环境改变而改变的、不可共享的状态

四、注意事项

1、有大量对象,并且消耗内存,且对象的状态大部分可以外部化时= > 考虑享元模式

2、用唯一表示码,如果内存中有,则返回一个唯一标识码的对象,用HashMap、HashTable存储。也要考虑是否有并发

3、降低对象的创建,降低程序的内存使用,提高效率。

4、增加了系统的复杂度,需要分离出内部状态和外部状态,而外部状态具有固化特性,不应该随着内部状态的变化而变化。

5、使用时注意划分内部状态和外部状态,并使用一个工厂类加以控制。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值