package com.sjms._09_结构_享元模式;
/**
* 享元模式(预加载单例)
* “元” 理解为 “同一地址对象”
* 运用共享技术,减少对象的创建,降低对象的数量,降低内存消耗,提高性能
* <p>
* 注意
* 线程安全问题
* 内部状态:属性值由类生成时确定,不会改变
* 外部状态:属性值由参数决定,依赖传递值
* <p>
* 实现思路
* 多个位置的操作,需要相同的一些对象,此时将相同的一些对象封装进一个工厂内,创建后持久化到内存中
* 可以在任意位置,通过key进行获取同一地址的对象,减少创建
* <p>
* 代码举例
* 存在多种缓存实现,缓存对象只需要一个,但是不保证什么情况下使用什么类型
* 此时可以采用享元模式,“元” 理解为 “同一地址对象”
* <p>
* 源码应用
* Integer 问题
* 使用场景:String 类型,连接池
* Integer.valueOf() 、Long.valueOf()
* 当数字范围超出, short 1字节 (-128 、+127),生成模式为 new 新对象 ,否则直接读 IntegerCache缓存,值可以通过JVM参数 调整
*/
public class _Test {
public static void main(String[] args) {
Cache local = CacheFactory.getCache("local");
local.set("name", "小明");
local.get("name");
Cache redis = CacheFactory.getCache("redis");
redis.set("name", "小明");
redis.get("name");
Cache cache = CacheFactory.getCache("未知");
cache.set("name", "小明");
cache.get("name");
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
java设计模式【之】享元模式【源码】【场景:多缓存可选模式】 /** * 享元模式(预加载单例) * “元” 理解为 “同一地址对象” * 运用共享技术,减少对象的创建,降低对象的数量,降低内存消耗,提高性能 * <p> * 注意 * 线程安全问题 * 内部状态:属性值由类生成时确定,不会改变 * 外部状态:属性值由参数决定,依赖传递值 * <p> * 实现思路 * 多个位置的操作,需要相同的一些对象,此时将相同的一些对象封装进一个工厂内,创建后持久化到内存中 * 可以在任意位置,通过key进行获取同一地址的对象,减少创建 * <p> * 代码举例 * 存在多种缓存实现,缓存对象只需要一个,但是不保证什么情况下使用什么类型 * 此时可以采用享元模式,“元” 理解为 “同一地址对象” * <p> * 源码应用 * Integer 问题 * 使用场景:String 类型,连接池 * Integer.valueOf() 、Long.valueOf() * 当数字范围超出, short 1字节 (-128 、+127),生成模式为 new 新对象
资源详情
资源评论
资源推荐
收起资源包目录
java设计模式【之】享元模式【源码】【场景:多缓存可选模式】.rar (5个子文件)
_09_结构_享元模式
_Test.java 2KB
Cache.java 150B
CacheFactory.java 821B
LocalCache.java 565B
RedisCache.java 571B
共 5 条
- 1
长毛山顶洞人
- 粉丝: 99
- 资源: 52
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0