在下面的代码中,我希望在Asp.net应用程序中每个会话只执行一次“GetClassTeacher”方法,我在调用数据库之前使用了session来检查对象是否为null。
我的问题是,这是实现此方法的最佳方式,还是我可以使用单例模式来实现此目的,如果是这样,如何在每个会话中实现它。
public class School
{
public List<Student> GetAllStudents() {}
public List<Teacher> GetAllTeachers() {}
//Singleton pattern or Check for Null
public Teacher GetClassTeacher()
{
Teacher teacher = new Teacher();
teacher = Session["Teacher"] as Teacher
if (teacher == null)
{
//Get Teacher Info from Database
}
}
}
答案 0 :(得分:2)
我认为使用会话很好 - 但如果您不需要实例化教师对象,则可以减少一些开销:
public Teacher GetClassTeacher()
{
var teacher = Session["Teacher"] as Teacher
if (teacher == null)
{
//Get Teacher Info from Database
}
}
答案 1 :(得分:2)
检查null是完全有效的。使用Session也是有效的。
public static Teacher GetClassTeacher()
{
Teacher teacher = HttpContext.Current.Session["Teacher"] as Teacher;
if (teacher == null)
{
//Get Teacher Info from Database
teacher = GetTeacherFromDB();
HttpContext.Current.Session["Teacher"] = teacher;
}
return teacher;
}
答案 2 :(得分:0)
以下是单身人士的样本:http://msdn.microsoft.com/en-us/library/ff650316.aspx。此外,还对不同的实施进行了一些调查:http://www.yoda.arachsys.com/csharp/singleton.html。
否则,我不知道怎么说如果使用单身(或不使用单身)是“最好的”。你的情况将有助于确定它。就个人而言,我在asp.net中所做的事情并不多。