关于c#:Singleton模式/检查空 – 使用Asp.Net和Session

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中所做的工作中,我并不觉得有太大的必要。