设计模式(十二):享元模式

运用共享技术有效地支持大量细粒度的对象。在有大量对象时,有可能会造成内存溢出,我们把其中共同的部分抽象出来,如果有相同的业务请求,直接返回在内存中已有的对象,避免重新创建。

享元模式是对象池模式的一种。

应用实例: 1、JAVA 中的 String,如果有则返回,如果没有则创建一个字符串保存在字符串缓存池里面。 2、数据库的数据池。

在Java语言中,String类型就是使用了享元模式。String对象是final类型,对象一旦创建就不可改变。在JAVA中字符串常量都是存在常量池中的,Java会确保一个字符串常量在常量池中只有一个拷贝。譬如:

String a = "abc";
String b = "abc";
System.out.println(a==b);

a和b都指向了常量池中的同一个字符串常量“abc"。
享元模式采用一个共享来避免大量拥有相同内容对象的开销。这种开销最常见、最直观的就是内存的消耗。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • String 的声明 由 JDK 中关于String的声明可以知道: 不同字符串可能共享同一个底层char数组,例...
    CodeKing2017阅读 5,591评论 1 2
  • 定义 使用共享变量可有效地支持大量的细粒度对象。享元模式是以共享的方式高效的支持大量的细粒度对象。享元模式能做到共...
    朽木亦自雕阅读 1,573评论 0 1
  • 转自:http://blog.csdn.net/jackfrued/article/details/4492194...
    王帅199207阅读 12,737评论 3 93
  • 家里的橘子熟了,周末大姐带着两小孩回家摘橘子。晚上她在微信里给我发了一张照片,照片里奶奶眯缝着眼睛,脸上的皱纹和老...
    清水小和尚阅读 5,716评论 19 22
  • 班级事,无大事,非小事。班级事,谁说了算,大家公认才能算。作为班主任,第一次“自愿”务必重视,应该做些艺术...
    壹口田阅读 4,357评论 7 12