什么是工厂模式?能否搞个最简单的例子看看

解决方案 »

  1.   

            private static readonly object _syncLock = new object();//线程同步锁;
            private static DataAccessorFactory _instance;
            /// <summary>
            /// 返回 DataAccessorFactory 的唯一实例;
            /// </summary>
            public static DataAccessorFactory Instance
            {
                get
                {
                    if (_instance == null)
                    {
                        lock (_syncLock)
                        {
                            if (_instance == null)
                            {
                                _instance = new DataAccessorFactory();
                            }
                        }
                    }
                    return _instance;
                }
            }        public IDataAccessor GetDataAccessor(AccessorType type)
            {
                if (type == AccessorType.SqlServer)
                {
                    return new SqlDataAccessor();
                }
                else
                {
                    return new AccessDataAccessor();
                }
            }调用:
    IDataAccessor da = DataAccessorFactory.Instance.GetDataAccessor(DataAccessorFactory.AccessorType.SqlServer);
      

  2.   

    简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例。
    public abstract class VideoWiring
        {
            public abstract string PlayVideo();
        }    public class Create
        {
            public static VideoWiring factory(string VideoName)
            {
                switch (VideoName)
                {
                    case "DVD":
                        return new DVD();
                    case "VCD":
                        return new VCD();
                }
                return null;
            }
        }
        public class VCD:VideoWiring
        {
            public override string PlayVideo()
            {
                return "正在播放播放VCD";
            }
        }    public class DVD : VideoWiring
        {
            public override string PlayVideo()
            {
                return "正在播放播放DVD";
            }
        }
    看下这个例子
    VideoWiring vw = Create.factory("DVD");
                textBox1.Text= vw.PlayVideo();
                vw = Create.factory("VCD");
                textBox1.Text+=vw.PlayVideo();
      

  3.   

    {
      加法运算类
      减法运算类
      XX法运算类
    }工厂类
    {
        生成并返回XX法运算类实例方法
    }运用类
    {
        工厂类.生成实例方法
    }
      

  4.   

    http://download.csdn.net/source/1420818
    这里有大话设计模式电子书的下载,第一章就是工厂模式,楼主研究一下吧,强烈推荐此书
      

  5.   

    System.Data.*
    下的*Factory就是最好的例子.