public class UserSession
{
private UserSession()
{
}
public static UserSession Current
{
get
{
var session= (UserSession)HttpContext.Current.Session["_userSession"];
if (session == null)
{
session = new UserSession();
HttpContext.Current.Session["_userSession"] = session;
}
return session;
}
}
public User User { get; set; }
}
//USAGE
UserSession.Current.User
我试图弄清楚此代码中使用了哪些模式。 我的理解是,这是
我也对
感到困惑有人可以解释这里发生了什么吗?
答案 0 :(得分:0)
在这里我看到单例模式: 如果类的静态方法不存在,则会生成类实例
对于LazyLoading,我不确定是否可以看到这样的内容,因为延迟加载的想法是节省资源,但是在这里我们可以看到轻量级的对象
使用类的静态方法来获取同一类的实例是一种常见做法,但不是最佳方法。更好的选择是使用上下文获取类的实例并避免使用静态方法,因为可以从应用程序的任何位置调用它,但是在这里我们面对的是HttpContext。当前静态属性在我看来是设计问题,因此我们可以使用这样的UserContext