Singleton Pattern / Check for Null - While using Asp.Net with Session
在下面的代码中,我希望在ASP.NET应用程序中的每个会话中只执行一次"getClassecher"方法,在调用数据库之前,我使用会话检查对象是否为空。
我的问题是,这是实现这个方法的最佳方法吗,或者我可以使用单例模式来实现这个方法吗,如果可以的话,如何在每个会话中实现它。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 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 } } } |
检查空值是完全有效的。使用会话也是有效的。
1 2 3 4 5 6 7 8 9 10 11 | 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; } |
我认为使用会话是很好的——但是如果您不必:
1 2 3 4 5 6 7 8 | public Teacher GetClassTeacher() { var teacher = Session["Teacher"] as Teacher if (teacher == null) { //Get Teacher Info from Database } } |
以下是singleton的示例:http://msdn.microsoft.com/en-us/library/ff650316.aspx。此外,还对不同的实现进行了一些调查:http://www.yoda.arachsys.com/csharp/singleton.html。
否则,我不知道该怎么说使用一个单独的(或不使用一个)是"最好的"。你的情况将有助于决定它。就我个人而言,在我在ASP.NET中所做的工作中,我并不觉得有太大的必要。