设计模式二:享元模式(Flyweight Pattern)

设计模式——享元模式

1、享元模式的定义

享元模式:享元模式(FlyweightPattern)即共享对象的模式。在实际业务场景中,经常出现这样的一种情况——一个对象的属性值从对象被创建出来后基本就是不变的,并且在很多地方都需要使用到这个对象,此时就可以考虑使用享元模式了!享元模式主要解决的就是减少相同对象的创建,以便节省内存空间,从而提高系统的性能。使用享元模式时,如果需要某一个对象,那么就会尝试找到可以重用的对象,如果没有找到的话就会创建出这样的一个对象并返回,同时将创建的对象保存起来,以便下一次需要相同的对象的时候直接返回,这样就可以达到共享的目的,从而节省系统内存空间,提高性能!

2、实际使用场景:


Message.java

private static final Object sPoolSync = new Object();
private static Message sPool;
private static int sPoolSize = 0;
    
public static Message obtain() {
        synchronized (sPoolSync) {
            if (sPool != null) {
                Message m = sPool;
                sPool = m.next;
                m.next = null;
                m.flags = 0; // clear in-use flag
                sPoolSize--;
                return m;
            }
        }
        return new Message();
}

MessageQueue中会不停有Message对象进来,为了节省内存空间,这些Message对象就可以复用。因为JVM不是会立即
回收这些用过的对象,而是要等到内存不够用或者强制调用的时候才会调用jc回收,那些没有及时回收但又不再使用
的Message对象就容易造成内存浪费,所以可以使用享元模式来避免这种浪费。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值