public Flyweight GetFlyweight(string key) { Flyweight f; if (!dic.TryGetValue(key, out f)) { f = new ConcreteFlyweight("网站"); dic.Add(key, new ConcreteFlyweight("网站")); } return(f); }
public Flyweight getFlyweight(String key) { Flyweight flyweight; if (flyweights.ContainsKey(key)) { flyweight = (Flyweight)flyweights[key]; Console.WriteLine("具体享元" + key + "已经存在,被成功获取!"); } else { flyweight = new ConcreteFlyweight(key); flyweights.Add(key, flyweight); } return(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.Read(); }