单例模式/检查空 - 在使用带会话的Asp.Net时

时间:2011-08-03 23:14:07

标签: c# asp.net

在下面的代码中,我希望在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
       }   
   }
}

3 个答案:

答案 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中所做的事情并不多。