享元模式
1、What-是什么?
享元模式是一种轻量级的结构型模式。旨在以共享的方式高效的支持大量的细粒度对象的复用。要求能够共享的对象必须是细粒度对象,这些对象比较相似,状态变化小。2、Why-为什么?
2、Why-为什么?
打打瞌睡打算
享元对象做到共享的关键是区分了对象的内部状态(Internal State)和外部状态(External State)。 内部状态:存储在享元对象内部,不会随环境的变化而有所不同,是享元对象的共享部分; 外部状态:随环境变化而变化,是不允许共享的"个性化"状态。 外部状态有客户端保存,再享元对象被创建后,在使用时将外部状态传入享元对象内部。 内部状态和外部状态要求互不影响。3、When/Where-何时何地使用?
案例一:当你要做一款文本编辑器,对于同一个字符"a",可能在不同位置多次出现,如果你将每个出现的字符都封装为一个独立的字符对象,将相当占用空间。倘若你注意到这些多次出现的字符"a"除了字符样式和位置信息不同外,其他属性均一致。那么对于这个字符对象来说,我们可将其字符样式和位置信息设置为外部状态,其他相同的属性设置为内部状态,从而达到在整个系统中虽然只使用了一个字符对象,但却可以展示出不同样式和位置的字母"a"。 案例二:在JAVA语言中,String类型就是使用了享元模式。String对象是final类型,一旦创建就不能改变。当你尝试对其进行“改变”(截取、拼接等字符操作)时,JVM执行的实际执行的操作是new了新的String对象。同时,JVM中的String对象是共享的,当系统存在两个包含相同字符串的String对象时,JVM实际上只创建了一个对象并提供两个引用,从而实现String对象的共享。 案例三: 推荐文章:https://www.cnblogs.com/edisonchou/p/7148258.html
更多精彩