using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Reflection;namespace Tstring.Comm {
    /// <summary>
    /// 产品工厂
    /// </summary>
    public class CommFactory {        #region 创建实例
        //创建实例
        public CommFactory CreateInstance(string str) {
            CommFactory instance;
            if (!string.IsNullOrEmpty(str)) {
                instance = Assembly.Load(str).CreateInstance(str) as CommFactory;
            } else {
                instance = null;
            }
            return instance;
        }
        #endregion
    }    /// <summary>
    /// 产品工厂子类
    /// </summary>
    public class UserInfo : CommFactory { }    /// <summary>
    /// 逻辑工厂
    /// </summary>
    public class BusiFactory {        #region 创建实例
        //创建实例
        public BusiFactory CreateInstance(string str) {
            BusiFactory instance;
            if (!string.IsNullOrEmpty(str)) {
                instance = Assembly.Load(str).CreateInstance(str) as BusiFactory;
            } else {
                instance = null;
            }
            return instance;
        }
        #endregion
    }    /// <summary>
    /// 逻辑工厂子类
    /// </summary>
    public class UserBusi : BusiFactory {}    /// <summary>
    /// 测试
    /// </summary>
    public class Test {
        void Main() {
            CommFactory info = new CommFactory().CreateInstance("UserInfo");
            BusiFactory bus = new BusiFactory().CreateInstance("UserInfo");
        }
    }
}

解决方案 »

  1.   

    这里不对劲...使用的时候还是不方便
    CommFactory info = new CommFactory().CreateInstance("UserInfo");
      

  2.   

    大家再帮我看看,修改如下,MS比不用工厂模式还要麻烦嘞,咋回事儿?
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Reflection;namespace Tstring.Comm {
        public abstract class Information { }    public class UserInfo : Information { }    public class EventInfo : Information { }
        public abstract class Business { }    public class UserBusi : Business { }    public class EventBusi : Business { }    public class InformationFactory {
            public virtual Information Create(){return null;}
        }    public class UserInfoFactory : InformationFactory {
            public override Information Create() {
                return new UserInfo();
            }
        }    public class EventInfoFactory : InformationFactory {
            public override Information Create() {
                return new EventInfo();
            }
        }
        public class BusinessFactory {
            public virtual Business Create() { return null; }
        }    public class UserBusiFactory : BusinessFactory {
            public override Business Create() {
                return new UserBusi();
            }
        }    public class EventBusiFactory : BusinessFactory {
            public override Business Create() {
                return new EventBusi();
            }
        }    public class Test {
            void Main() {
                InformationFactory fact = new UserInfoFactory();
                BusinessFactory fact_busi = new UserBusiFactory();
                Information info = fact.Create();
                Business bus = fact_busi.Create();
            }
        }
    }