1、享元模式:运用共享技术有效地支持大量细粒度的对象。
2、优点:(1)、享元模式可以避免大量非常相似类的开销。在程序设计中,有时需要生成大量细粒度的实例来表示数据。如果能发现这些实例处理几个参数外都是相同的,有时能够大幅度减少需要实例化的类的数量。如果能把那些参数移动到类实例的外面,在方法调用时将它们传递进来,就可以通过共享大幅度减少单个实例的数目。(2)、由于代码共享,如果以后修改也会相对方便。
3、应用:(1)、如果一个应用使用了大量的对象,而打俩个的这些对象造成了很大的存储开销时就应该考虑使用;(2)、对象的大多数状态可以外部状态,如果删除对象的外部状态,那么可以用相对较少的共享对象取代很多组对象,此时可以考虑使用享元模式。
4、组成
(1) 、抽象享元角色:为具体享元角色规定了必须实现的方法,而外蕴状态就是以参数的形式通过此方法传入。
(2) 、具体享元角色:实现抽象角色规定的方法。如果存在内蕴状态,就负责为内蕴状态提供存储空间。
(3) 、享元工厂角色:负责创建和管理享元角色。要想达到共享的目的,这个角色的实现是关键!
(4) 、客户端角色:维护对所有享元对象的引用,而且还需要存储对应的外蕴状态。