设计模式——享元模式11

享元模式又称缓存模式:把一个实体的数据分成两个部分,一部分为静态数据,一部分为动态数据,分开存储。 目的减少重复信息的数据加载。如:秒杀环境下,商品1 数量为 10000000, 我们只需把。一个商品的静态信息加载到内存,实时数据如库存信息由访问Redis实时获取。
设计模式,一定要敲代码理解

实体

java 复制代码
/**
 * @author ggbond
 * @date 2024年04月09日 08:17
 *
 */
public class Commodity {
    private  long cid;
    private  String name;
    private  String type;
    private  String typeId;
    private String desc;
    //库存属性 是动态的,拆分成一个类 stockManage
    private  stockManage stockManage;
}

享元实体

java 复制代码
public class stockManage {
    private int saleNum; //共计数量

    private int  soldNum; //已卖数量
 }

享元工厂

java 复制代码
public class CommodityFactory {
    private static Map<Long,Commodity> map=new HashMap<>();
    public static Commodity getCommodity(Long cid){
        if (map.containsKey(cid)) {
            return map.get(cid);
        }else {
            //查询数据库返回
            Commodity commodity=new Commodity(2l,"耳机","电子产品","001","这是耳机");
            return  commodity;
        }
    }
}

调用封装

java 复制代码
    public static void main(String[] args) {
        //数据库获取商品静态信息
        Commodity commodity = CommodityFactory.getCommodity(1l);
        //redis等获取实时 商品库存信息
        stockManage stockManage=new stockManage(100,50);

        //商品信息组合
        commodity.setStockManage(stockManage);

        //返回给客户端
        System.out.println(commodity.toString());

    }
java 复制代码
Commodity{cid=2, name='耳机', type='电子产品', typeId='001', desc='这是耳机', stockManage=stockManage{saleNum=100, soldNum=50}}

总结

有很多相似对象需加载,将可以节省大量内存。用时间换空间,适合秒杀等场景。

代码下载

代码下载

相关推荐
编程彩机10 分钟前
互联网大厂Java面试:从Java SE到大数据场景的技术深度解析
java·大数据·spring boot·面试·spark·java se·互联网大厂
笨蛋不要掉眼泪12 分钟前
Spring Boot集成LangChain4j:与大模型对话的极速入门
java·人工智能·后端·spring·langchain
Yvonne爱编码29 分钟前
JAVA数据结构 DAY3-List接口
java·开发语言·windows·python
像少年啦飞驰点、1 小时前
零基础入门 Spring Boot:从“Hello World”到可上线微服务的完整学习指南
java·spring boot·微服务·编程入门·后端开发
眼眸流转2 小时前
Java代码变更影响分析(一)
java·开发语言
Yvonne爱编码2 小时前
JAVA数据结构 DAY4-ArrayList
java·开发语言·数据结构
阿猿收手吧!2 小时前
【C++】C++原子操作:compare_exchange_weak详解
java·jvm·c++
csdn2015_2 小时前
MyBatis Generator 核心配置文件 generatorConfig.xml 完整配置项说明
java·mybatis
追逐梦想的张小年2 小时前
JUC编程03
java·开发语言·idea
万邦科技Lafite3 小时前
一键获取京东商品评论信息,item_reviewAPI接口指南
java·服务器·数据库·开放api·淘宝开放平台·京东开放平台