A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 韩金蕊 黑马帝   /  2011-12-27 16:29  /  2212 人查看  /  7 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 韩金蕊 于 2011-12-28 08:38 编辑

到底什么是享元模式呀,谁给我解释解释,看了好几遍视频还是不太懂。。

评分

参与人数 1技术分 +1 收起 理由
杨玉揆 + 1

查看全部评分

7 个回复

正序浏览
韩金蕊 黑马帝 2011-12-28 08:37:36
8#
曾运 发表于 2011-12-27 17:42
享元模式 简单来说就是把相同的部分抽取出来,设置为共享,这样可以节约内存开销。
java中 String类就是用 ...

谢谢啦。。
回复 使用道具 举报
张建银 黑马帝 2011-12-27 21:35:24
7#
享元模式最简单的理解就是把某些事物的共同属性抽取出来,附加不同的外部属性共同组成一个不同的对象,就好比我们都是人,而人(共同属性)+姓名(属性1)+面容(属性2)就有了张三,李四,王五不同的人了
回复 使用道具 举报
享元模式是对象的结构模式。享元模式以共享的方式高效地支持大量的细粒度对象。其能做到共享的关键是区分内部状态(Internal State)和外部状态(External)。内部状态是存储在对象内部的,并且不会随环境改变而有所不同的,因此,一个享元可以具有内部状态并可以共享。外部状态时随环境改变而改变的,不可以共享的状态。享元对象的外部状态必须由客户端保存,并在享元对象被创建之后,在需要使用的时候再传入到享元对象内部。外部状态不影响享元对象的内部状态。换句话说,它们是互相独立的。
回复 使用道具 举报
享元模式:  以共享的方式高效地支持大量的细粒度对象。比如String就是,String s1 ="abc";String s2 = "abc";但是内存中只有一个“abc”;用来尽可能减少内存使用量以及分享资讯给尽可能多的相似物件。
回复 使用道具 举报
曾运 黑马帝 2011-12-27 17:42:36
板凳
享元模式 简单来说就是把相同的部分抽取出来,设置为共享,这样可以节约内存开销。
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. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
杨玉揆 + 1

查看全部评分

回复 使用道具 举报
付星 黑马帝 2011-12-27 17:09:20
藤椅
简单说就是共享
类似String 常量池,它是一不可变方式存储,当前这样考虑可以重覆利用,节省内存
还有Integer类也有缓存常量池,这样-128~127的数就不用在内存里生成多次,直接引用就行,这是Integer类里面处理过程

评分

参与人数 1技术分 +1 收起 理由
杨玉揆 + 1

查看全部评分

回复 使用道具 举报
http://blog.csdn.net/ai92/article/details/224598,这有一篇关于享元模式的文章,你看一下呵呵~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马