public Flyweight GetFlyweight(string key) { if (!(flyweights[key] is Flyweight flyweight)) { Console.WriteLine("驻留池中不存在字符串" + key); flyweight = new ConcreteFlyweight(key); } return(flyweight); //return flyweights[key] as Flyweight; }
static void Main(string[] args) { //定义外部状态,例如字母的位置等信息 int externalstate = 10; //初始化享元工厂 FlyweightFactory factory = new FlyweightFactory(); //判断是否已经创建了字母A,如果已经创建就直接使用创建的对象A Flyweight fa = factory.GetFlyweight("A"); if (fa != null) { fa.Operation(--externalstate); } //判断是否已经创建了字母B Flyweight fb = factory.GetFlyweight("B"); if (fb != null) { fb.Operation(--externalstate); } //判断是否已经创建了字母C Flyweight fc = factory.GetFlyweight("C"); if (fc != null) { fc.Operation(--externalstate); } //判断是否已经创建了字母D Flyweight fd = factory.GetFlyweight("D"); if (fd != null) { fd.Operation(--externalstate); } else { Console.WriteLine("驻留池中不存在字符串D"); ConcreteFlyweight d = new ConcreteFlyweight("D"); factory.flyweights.Add("D", d); } Console.ReadLine(); }