享元模式

享元模式:怎么理解,享就是共享,元就就是对象,官方来讲是运用共享技术支持大量细粒度的对象,常用于底层开发,比如我们的数据库连接池,里面都是创建好的对象,我们需要的直接拿来使用,如果没有我们需要的,则重新创建一个.
它主要解决的是重复对象内存浪费问题,如果在我们的系统中有大量对象,需要缓冲池的时候,我们可以直接去缓冲池里拿,降低我们系统的内存,提高我们的效率
享元模式应用就在Stirng常量池,数据库连接池,缓冲池,都是我们享元模式的应用,享元模式是我们池技术的重要实现
享元模式提出了两个要求,细粒度和共享对象,这里涉及到内部状态和外部状态,将对象分为两个部分,内部状态和外部状态
内部状态是指对象共享出来的信息,存储在享元对象内部且不会随环境的改变而改变
外部状态是指对象得以依赖的一个标记,是随环境改变,不可共享的状态

比如我们做一个五子棋案例,我们如果每一个棋子都进行创建那么我们需要很多个对象,但是如果我们利用享元模式进行实现,找到其外部状态就是棋子的坐标,内部状态就是棋子的颜色(白和黑),那么我们只需要创建两个对象即可,大大加大了我们的效率
在我们的jdk中的integer如果我们的范围在-128到127,那么我们用的就是享元模式,具体可以看integer的源码
这里我们举个网站的例子,首先进行分析,我们内部状态和外部状态,内部状态就是网站本身,外部状态就是使用的人,每次都不一样,所以这里我们可以根据享元模式的类图进行设计
在这里插入图片描述
在这里插入图片描述
首先我们先定义不可共享的类,也就是我们的用户类
在这里插入图片描述
其次我们定义一个抽象的享元角色,用来给子类继承以及让子类进行扩展,提高系统的可扩展性
在这里插入图片描述
这是我们享元角色,具体的产品类
在这里插入图片描述
这是我们的享元工厂来,用来创建我们的享元对象,通过map集合进行实现,如果有相同的key那么我们直接获取对象即可,达到了一个对于共享的状态

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值