java设计模式总结十:享元模式

享元模式定义
享元模式(Flyweight Pattern),又称轻量级模式(这也是其英文名为FlyWeight的原因),通过共享技术有效地实现了大量细粒度对象的复用。
享元模式简单的说就是共享,举个例子,有十个人需要用笔,这十个人不是同时需要使用,这时候我们没有必要拿出十只笔,可以从1开始依次拿给他们,当不够的时候再拿,这里用到的就是享元模式的概念:共享
现在,面向对象技术虽然可以很好的解决一些灵活性问题,但是有时候,我们需要使用很多的对象来解决一些大的问题,如果每次用对象都是使用new来创建一个新的对象,那随着规模的增大,当对象数量太多时,会导致对象创建及垃圾回收的代价过高,造成性能下降等问题。享元模式通过共享相同或者相似的细粒度对象解决了这一类问题。


享元模式使用场景
进行过数据库开发的应该都听过数据库连接池这个概念,在数据库连接池中,维护着一些数据库连接对象Connection,它就运用了享元模式这一设计模式,当我们操作数据库时,不需要去创建数据库连接对象,直接从该连接池中取出空闲的连接对象就行,从而减少了连接对象的创建,减少了系统的开销
在java中,也有很多地方使用了享元模式,比如java的基本类型变量和String类型变量就使用的享元模式设计的,看如下代码:
int a = 1;
int b = 1;
String str1 = "hello";
String str2 = "hello";
System.out.println(a==b);
System.out.println(str1==str2);
我们看到输出的结果都是true,他们就是采用的共享模式


享元模式组成
FlyWeight享元接口:定义共享接口
public interface FlyWeight{
    void operation();
}   
ConcreteFlyWeight具体享元类:该类的对象将被复用
public class ConcreteFlyWeight implements FlyWeight{
    public ConcreteFlyWeight(){
    }
    public void operation(){
    }
}
FlyWeightFactory享元工厂类:它是享元模式中最关键的部分,它将维护以创建的享元实例,并对以创建的享元实例进行标记。如果要使用的对象未被创建,则进行创建并对该实例进行标记,否则工厂直接返回对应的实例,从而实现对象复用与共享
public class FlyWeightFactory{
    private FlyWeight flyWeight;
    public FlyWeight factory(){
    }
}


参考文献
深入浅出设计模式
jason blog
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值