黑马程序员技术交流社区

标题: 享元模式 [打印本页]

作者: 韩金蕊    时间: 2011-12-27 16:29
标题: 享元模式
本帖最后由 韩金蕊 于 2011-12-28 08:38 编辑

到底什么是享元模式呀,谁给我解释解释,看了好几遍视频还是不太懂。。
作者: 刘忠德    时间: 2011-12-27 16:55
http://blog.csdn.net/ai92/article/details/224598,这有一篇关于享元模式的文章,你看一下呵呵~
作者: 付星    时间: 2011-12-27 17:09
简单说就是共享
类似String 常量池,它是一不可变方式存储,当前这样考虑可以重覆利用,节省内存
还有Integer类也有缓存常量池,这样-128~127的数就不用在内存里生成多次,直接引用就行,这是Integer类里面处理过程
作者: 曾运    时间: 2011-12-27 17:42
享元模式 简单来说就是把相同的部分抽取出来,设置为共享,这样可以节约内存开销。
java中 String类就是用了享元模式
  1. class  Demo
  2. {
  3.         public static void main(String[] args)
  4.         {   
  5.         /*
  6.                 a,b, c三个不同的引用变量都指向了同一个实体,
  7.                 它们共享了一个实体,输出都是true
  8.                 */
  9.         String a="java";
  10.         String b="java";
  11.         String c="java";
  12.                 System.out.println(a==b);//true
  13.                 System.out.println(b==c);//true
  14.                 System.out.println(a==c);//true
  15.         }
  16. }
复制代码

作者: 颜宗茂    时间: 2011-12-27 20:27
享元模式:  以共享的方式高效地支持大量的细粒度对象。比如String就是,String s1 ="abc";String s2 = "abc";但是内存中只有一个“abc”;用来尽可能减少内存使用量以及分享资讯给尽可能多的相似物件。
作者: 刘小峰    时间: 2011-12-27 21:27
享元模式是对象的结构模式。享元模式以共享的方式高效地支持大量的细粒度对象。其能做到共享的关键是区分内部状态(Internal State)和外部状态(External)。内部状态是存储在对象内部的,并且不会随环境改变而有所不同的,因此,一个享元可以具有内部状态并可以共享。外部状态时随环境改变而改变的,不可以共享的状态。享元对象的外部状态必须由客户端保存,并在享元对象被创建之后,在需要使用的时候再传入到享元对象内部。外部状态不影响享元对象的内部状态。换句话说,它们是互相独立的。
作者: 张建银    时间: 2011-12-27 21:35
享元模式最简单的理解就是把某些事物的共同属性抽取出来,附加不同的外部属性共同组成一个不同的对象,就好比我们都是人,而人(共同属性)+姓名(属性1)+面容(属性2)就有了张三,李四,王五不同的人了
作者: 韩金蕊    时间: 2011-12-28 08:37
曾运 发表于 2011-12-27 17:42
享元模式 简单来说就是把相同的部分抽取出来,设置为共享,这样可以节约内存开销。
java中 String类就是用 ...

谢谢啦。。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2