简介

对象的状态分为两种:

比如水果的名称和价格是水果的内蕴状态;水果的重量是水果的外蕴状态。

享元模式通过共享,避免重复创建内容相同的对象,从而节省内存。

在享元模式中,被共享的对象是享元对象。客户端不会直接创建享元对象,必须通过享元工厂来创建,客户端需要给享元工厂提供要创建的享元对象的内蕴状态。享元工厂首先根据客户端提供的内蕴状态查找自己的缓存,如果曾经创建过内容相同的享元对象,则将它返回给客户端;否则享元工厂使用这个内蕴状态创建享元对象,然后把它存储到自己的缓存中,最后将它返回给客户端。

享元模式和单例模式的区别是:


角色


UML类图

flyweight.jpg