示例#1
0
        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;
        }
示例#2
0
        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();
        }