分析下这个类,这样写有无意义或改进的地方?
C# code
/// <summary>
///
/// </summary>
public class zt_classfilyBll : BaseClass
{
/// <summary>
///
/// </summary>
public zt_classfilyBll() { }
/// <summary>
/// 从缓存中获取类的对象
/// </summary>
/// <param name="modelName">对象缓存Key</param>
/// <returns></returns>
public static zt_classfilyBll GetRuntimeClass(string modelName)
{
//这里从缓存中获取类的实例
zt_classfilyBll bllclass = (zt_classfilyBll)CahceOperate.GetFromCache(modelName);
if (bllclass == null)
{
bllclass = new zt_classfilyBll();
CahceOperate.SaveToCache(modelName, bllclass);
}
return bllclass;
}
//....//类重载父类的方法.
}
调用:
C# code
zt_classfilyBll classBll = zt_classfilyBll.GetRuntimeClass("zt_classfilyBll");
classBll.父类的方法(xx);
感觉这样GetRuntimeClass这个方法写的位置不对,放在子类中四不像.
------解决方案--------------------看不出来 什么问题 帮忙顶下!
------解决方案--------------------封装到CahceOperate.GetFromCache里面?
------解决方案--------------------GetRuntimeClass 该函数放到其它类中为妥
------解决方案--------------------静态方法直接调用
zt_classfilyBll.GetRuntimeClass("")
------解决方案--------------------不创建实例直接调用
------解决方案--------------------
楼主是想实现工厂模式吗?不过你存在缓存里面是不是有点不合适。你的类如果是无状态的,直接定义静态方法就可以了。如果是有状态的,所有的调用都得到同一个对象就不满足你的需求了。
或者是一个持久化对象,例如connection,那就应该使用池了,而不是简单的用一个缓存。
------解决方案--------------------除了有些命名好像有点不规范以外,其他地方还好。
------解决方案--------------------public zt_classfilyBll() { }
public static zt_classfilyBll GetRuntimeClass(string modelName)
如果是我的话,我要把 public zt_classfilyBll() { } 这个构造函数,变为 私有 的。
否则 外部用户 只 new 不 GetRuntimeClass 的话……
------解决方案--------------------
------解决方案--------------------单个实例的管理还不如直接用static变量.
Cache是用来存取数据的,而不是用来获取运行时类型用的.非要这样用,我只能说你是把大卡车当成私家车在用.