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

本帖最后由 crazy_primitive 于 2013-7-14 10:37 编辑
  1. public class StaticImport {
  2. public static void main(String[] args) {
  3. flyWeight();
  4. }

  5. public static void flyWeight(){
  6. Integer i1=147;
  7. Integer i2=147;
  8. System.out.println(i1==i2);//false
  9. Integer i1=7;
  10. Integer i2=7;
  11. System.out.println(i1==i2);//true
  12. }
  13. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

1 个回复

倒序浏览
之前分享过了,还是给你发一下吧!

享元模式  flyweight
flyweight解释:Flyweight是拳击比赛中的特用名词,意思是“特轻量级”,指的是51公斤级比赛,用到设计模式中就是指我们的类要轻量级,粒度要小,这才是它要表达的意思。粒度小了,带来的问题就是对象太多,所以用共享技术来解决
                   Ps.如:Integer i1= 7;
                                                Integer i2 = 7;
                                                System.out.println(i1 == i2);// 输出true
                   就是用到了享元模式,对用到特别多的对象实现共享。可减少创建的对象数量,防止因对象太多而导致内存溢出问题的出现
                  
享元设计模式是池技术的重要实现:
定义:Use sharing tosupport large numbers of fine-grained objects efficiently.(使用共享对象可有效的支持大量的细粒度的对象)
细粒度对象
内部状态
              即对象可共享出来的信息,存储在享元对象内部并不会随环境改变而改变
外部状态
              外部状态是对象得以依赖的一个标记,是随环境改变而改变的,不可以共享的状态,它是一批对象的统一标识,是唯一的一个索引值。
优点:
         模式非常简单,可以大大减少应用程序创建的对象,降低程序内存的占用,增强程序的性能。
缺点:
         提高了系统的复杂性,需要分离出外部状态和内部状态,而且外部状态具有固化特性,不应该随内部状态改变而改变,否则导致系统的逻辑混乱。
使用场景:
1,  系统中存在大量的相似对象。
2,  细粒度的对象都具备较接近的外部状态,而且内部状态与环境无关,也就是说对象没有特定身份。
3,  需要缓冲池的场景。

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1 很给力!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马