之前分享过了,还是给你发一下吧!
享元模式 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, 需要缓冲池的场景。 |