(1)共享大量内容相同的细粒度对象,减少内存开销。(2)享元对象包含内蕴状态和外蕴状态,内蕴状态可以共享,外蕴状态不可以共享。(3)外蕴状态由客户端保存,外蕴状态无法影响内蕴状态。
举例来说:文本编辑器中的字体,一个字体就是一个享元,内蕴状态就是这个字本身,字体的字模风格和所在位置就是外蕴状态。
2. 代码架构(1)抽象享元类,含商业方法,外蕴状态作为参数传入。(2)具体享元类继承抽象享元类,构造函数参数为内蕴状态。
(3)享元工厂,一般为单例模式,即只能由享元工厂创建和管理享元,保证享元被适当地共享。工厂方法参数为内蕴状态。
3. Java中对享元模式的应用
(1)String 类,不变对象,一旦创建出来就无法改变。
对于内容相同的两个字符串,JVM只创建一个String对象给这两个引用。
参考文献:
1. 《设计模式》 板桥里人
2. 《Java与模式》 阎宏
没有评论:
发表评论