今天看一个同事写的代码.是一个小网站,三层架构的那种...代码如下:
在ASPX里:protected void xxx1_Click(object sender, EventArgs e)
{
IList<Model.Category> list = Swdl.BLL.CategoryBLL.Value.GetAllList();
}BLL层的大致方法:namespace Swdl.BLL
{
public partial class CategoryBLL
{
private static CategoryBLL _value;
//静态BLL成员
public static CategoryBLL Value
{
get{
if (CategoryBLL._value == null)
CategoryBLL._value = new CategoryBLL();
return CategoryBLL._value;}} public IList<Model.Category>GetAllList(){ return CategoryDAL.Value.GetAllList();}}
}
在DLL层的大致方法:namespace Swdl.DAL
{
public partial class CategoryDAL
{private static CategoryDAL _value;
public static CategoryDAL Value
{
get
{
if (CategoryDAL._value == null)
CategoryDAL._value = new CategoryDAL();
return CategoryDAL._value;
}
}public IList<Model.Category>GetAllList(){ //数据库操作代码}
}
}实在不太明白,这样的话每个BLL/DLL层的类网站只有一个实例,我就是想问,这样不会出现什么问题吗?比如说:一个请求需要很长时间处理完的话,后面的请求会不会等结束了才会处理,或者线程方面的问题..
在ASPX里:protected void xxx1_Click(object sender, EventArgs e)
{
IList<Model.Category> list = Swdl.BLL.CategoryBLL.Value.GetAllList();
}BLL层的大致方法:namespace Swdl.BLL
{
public partial class CategoryBLL
{
private static CategoryBLL _value;
//静态BLL成员
public static CategoryBLL Value
{
get{
if (CategoryBLL._value == null)
CategoryBLL._value = new CategoryBLL();
return CategoryBLL._value;}} public IList<Model.Category>GetAllList(){ return CategoryDAL.Value.GetAllList();}}
}
在DLL层的大致方法:namespace Swdl.DAL
{
public partial class CategoryDAL
{private static CategoryDAL _value;
public static CategoryDAL Value
{
get
{
if (CategoryDAL._value == null)
CategoryDAL._value = new CategoryDAL();
return CategoryDAL._value;
}
}public IList<Model.Category>GetAllList(){ //数据库操作代码}
}
}实在不太明白,这样的话每个BLL/DLL层的类网站只有一个实例,我就是想问,这样不会出现什么问题吗?比如说:一个请求需要很长时间处理完的话,后面的请求会不会等结束了才会处理,或者线程方面的问题..
不会出现一个请求需要很长时间处理完的话,后面的请求会不会等结束了才会处理这种情况,因为web应用是多线程的
这不是单例模式,这就是使用静态变量来更加方便的达到需求。《设计模式》是很早的书,GOF不可能懂.net中的先进的的东西。