没有单例模式的单实例

本文关键字:实例 单实例 单例模式 | 更新日期: 2023-09-27 18:05:06

请告诉我适合以下需要的最佳样式。

Class Base
{
    List<string> a;
    List<string> b;   
    public Base()
    {
        //"Calling Base"
    }
}
Class Der : Base
{
    GetListA()
    {
        return a;
    }
    GetListB()
    {
        return b;
    }
}
Class Der1 : Base
{
    GetListA()
    {
        return a;
    }
    GetListB()
    {
        return b;
    }
}
Main()
{
    Der1 obj1 = new Der1();
    Der obj= new Der();
    obj.GetListA();
    obj.GetListB();
    obj1.GetListA();
    obj1.GetListB();
}

当我使用obj1obj2时,当前每次创建新对象时都会调用基类构造函数。

Base类正在生成10k条记录。我希望它只生成一次,并保留它以供其他人重用。

这是一个纯web服务器应用程序,我的应用程序不接受任何静态变量/对象或单例类。如果没有,我需要执行这个任务。

有办法做到这一点吗??

没有单例模式的单实例

Class Base
{
    static List<string> a;
    static List<string> b;   
    public Base()
    {
        if(this.a == null)
        {
             a = database.GetListitemsForA();
        }
        if(this.b == null)
        {
             b = database.GetListitemsForB();
        }
    }
}

与使用静态变量类似的是使用Application属性

您可以使用这样的属性来取消创建您的类的多个实例

public SomeClass Instance
{
     get
     {
          if (Application["SomeClassInstance"] == null)
          {
               Application["SomeClassInstance"] = new SomeClass();
          }
          return (SomeClass)Application["SomeClassInstance"];
     }
}