C# 没有单实例模式的单实例
请建议我最好的模式,将适合以下需要C# 没有单实例模式的单实例,c#,C#,请建议我最好的模式,将适合以下需要 Class Base { List<string> a; List<string> b; public Base() { //"Calling Base" } } Class Der : Base { GetListA() { return a; } GetListB() { return b;
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();
}
类基
{
清单a;
名单b;
公共基地()
{
//“呼叫基地”
}
}
等级:基础
{
GetListA()
{
返回a;
}
GetListB()
{
返回b;
}
}
类Der1:基
{
GetListA()
{
返回a;
}
GetListB()
{
返回b;
}
}
Main()
{
Der1 obj1=新的Der1();
Der obj=新的Der();
obj.GetListA();
obj.GetListB();
obj1.GetListA();
obj1.GetListB();
}
当我使用obj1
或obj2
时,当前每次创建新对象时都会调用基类构造函数
Base
类正在生成大约10k条记录。我希望只生成一次,并将其保留给其他人以供重用
它的纯web服务器应用程序和我的应用程序不接受任何静态变量/对象或单例类。没有这一点,我需要完成这项任务
有什么方法可以实现这一点吗?类似于使用静态变量的方法是使用 您可以使用这样的属性来避免创建类的多个实例
public SomeClass Instance
{
get
{
if (Application["SomeClassInstance"] == null)
{
Application["SomeClassInstance"] = new SomeClass();
}
return (SomeClass)Application["SomeClassInstance"];
}
}
类基
{
静态列表a;
静态列表b;
公共基地()
{
if(this.a==null)
{
a=数据库.GetListitemsForA();
}
if(this.b==null)
{
b=数据库.GetListitemsForB();
}
}
}
解释为什么不能使用静态变量?作为web服务器与该语句有什么关系?如果我使用静态方法、变量,我现有的应用程序将在整个错误过程中都会出错,为什么不希望调用基类构造函数?你的两个对象都是基于它的,所以它当然会被调用。对象继承就是这样工作的。背后的逻辑是,“GenerateRecords”是一个方法,它存在于所有派生类中。这种方法会产生大量的数据,这是所有人都共有的。我的所有派生类(比如5种类型的派生类)中都有类似的代码。现在我想把方法“GenerateRecords”移到外部,我想让它成为所有类的通用方法,应该被调用一次并被其他人重用。我不知道怎么做。我现在面临的问题是基类{void Run();}classderv1:Base{void Run();}classderv2:Base{void Run();}Run()正在创建大量记录。因此,我想创建一个Run()方法,不管我的类是如何派生的,它只执行一次。我无法创建单例是条件。
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();
}
}
}