using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Collections;
/*
 
 享元模式
 
 * (共享单元)
 * 有太多的相同类型对象时,可以选用这个模式
 * 减少存储开销
 * 
 * 
 
 */
namespace App_MYCS.HDL_SJMS.HYMS
{
    class my_HYMS
    {
        public void Dy()
        {
            int i = 22;
FlyweightFactory f = new FlyweightFactory();
            Flyweight fx = f.GetFlyweight("x");
            fx.Operation(--i);
            Flyweight fy = f.GetFlyweight("y");
            fx.Operation(--i);
            Flyweight fz = f.GetFlyweight("z");
            fx.Operation(--i);
            Flyweight fu = new UnsharedConcreteFlyweight();
            fu.Operation(--i);
}
}
    //抽像享元(抽像共享)
    abstract class Flyweight
    {
        public abstract void Operation(int extrinsicstate);
        //可以增加抽像方法代入共享对象中的不同部份
    }
    //共享对象类
    class ConcreteFlyweight : Flyweight
    {
        public override void Operation(int extrinsicstate)
        {
            Console.WriteLine("共享的Flyweight" + extrinsicstate);
        }
    }
    //不共享的类
    class UnsharedConcreteFlyweight : Flyweight
    {
        public override void Operation(int extrinsicstate)
        {
            Console.WriteLine("不共享的具体Flyweight" + extrinsicstate);
        }
    }
    //共享单元类
    class FlyweightFactory
    {
        //一个共享对象集合
        private Hashtable flyweights = new Hashtable();
        public FlyweightFactory()
        {
            //初始化就实例化共享单元集合的所有对象
            flyweights.Add("X", new ConcreteFlyweight());
            flyweights.Add("Y", new ConcreteFlyweight());
            flyweights.Add("Z", new ConcreteFlyweight());
        }
        //通过标识获取共享单元
        public Flyweight GetFlyweight(string key)
        {
            return (Flyweight)flyweights[key];
        }
    }
   
}
原文:http://www.cnblogs.com/longkai178/p/5815105.html