4、本角色必须保证享元对象可以被系统适当地共享。当一个客户端对象调用一个享元对象的时候,享元工厂角色会检查系统中是否已经有一个复合要求的享元对象。如果已经有了,享元工厂角色就应当提供这个已有的享元对象;如果系统中没有一个适当的享元对象的话,享元工厂角色就应当创建一个合适的享元对象。客户端(Client)角色:本角色需要维护一个对所有享元对象的引用。本角色需要自行存储所有享元对象的外蕴状态。三、 单纯享元模式的示意性源代码// Flyweight pattern -- Structural example using Syst
5、em;using System.Collections;// "FlyweightFactory"class FlyweightFactory{ // Fields private Hashtable flyweights = new Hashtable(); // Constructors public FlyweightFactory() { flyweights.Add("X", new ConcreteFlyweight()); flyweights.Add("Y", new Concrete
6、Flyweight()); flyweights.Add("Z", new ConcreteFlyweight()); } // Methods public Flyweight GetFlyweight(string key) { return((Flyweight)flyweights[ key ]); }}// "Flyweight"abstract class Flyweight{ // Methods abstract public void Operation( int extrins