在工厂模式的代码里,我写了如下的一个类来获取实例对象,求改进!
代码如下:
/// <summary>
/// Abstract Factory pattern to create the DAL。
/// 如果在这里创建对象报错,请检查web.config里是否修改了<add key="DAL" value="Maticsoft.SQLServerDAL" />。
/// </summary>
public sealed class DataAccess
{
private static readonly string AssemblyPath = ConfigurationManager.AppSettings["DAL"];
public DataAccess()
{ }
#region CreateObject
//不使用缓存
public static T CreateObjectNoCache<T>(string className)
{
string classNamespace = AssemblyPath + "." + className;
try
{
object objType = Assembly.Load(AssemblyPath).CreateInstance(classNamespace);
return (T)objType;
}
catch//(System.Exception ex)
{
//string str=ex.Message;// 记录错误日志
return default(T);
}
}
//使用缓存
public static T CreateObject<T>(string className)
{
string classNamespace = AssemblyPath + "." + className;
object objType = DataCache.GetCache(classNamespace);
if (objType == null)
{
try
{
objType = Assembly.Load(AssemblyPath).CreateInstance(classNamespace);
DataCache.SetCache(classNamespace, objType);// 写入缓存
}
catch//(System.Exception ex)
{
//string str=ex.Message;// 记录错误日志
}
}
return (T)objType;
}
#endregion
}