gpt4 book ai didi

java - 实现只有一个实例的类

转载 作者:行者123 更新时间:2023-12-02 13:41:28 24 4
gpt4 key购买 nike

大家好!这是我的问题:

我需要为我的应用程序制作一个教程。为此,我创建了一个名为 TutorialClass 的类,其中包含一些我需要从其他几个类调用的方法。工作流程大致如下:

1 级:

//...
if(Tutorial.tutorialStep==Tutorial.TUTORIAL_STEP1){
Tutorial.TutorialStep1();
Tutorial.tutorialStep=Tutorial.TUTORIAL_STEP2;
}

2 级:

//...
if(Tutorial.tutorialStep==Tutorial.TUTORIAL_STEP2){
Tutorial.TutorialStep2();
Tutorial.tutorialStep=Tutorial.TUTORIAL_STEP3;
}

等等...我使用的所有类,不一定要扩展 Activity

你可以在我使用的几个类中找到这段代码。所以,首先我需要创建一个TutorialClass的实例

TutorialClass Tutorial = null;

所以问题是:如何在我必须展示教程的所有类中使用这个实例?正如您所看到的,tutorialStep 的值必须对所有类可见,并且所有类都必须看到该值或更改它,以便让教程继续上。

这是我的教程类(class)的代码:

public class TutorialClass{

Context context;
public static int tutorialStep;

final int TUTORIAL_STEP1=1;
final int TUTORIAL_STEP2=2;
final int TUTORIAL_STEP3=3;
//...

TutorialClass(Context context){
this.context = context;
}

public void Tutorial1() { ... }
public void Tutorial2() { ... }
public void Tutorial3() { ... }
//...

}

我读到存在一个可以实现我的目标的 Singleton 类,但我注意到这不是最好的解决方案。你有什么解决办法吗?感谢大家!

最佳答案

您需要创建另一个返回TutorialClass实例的类

public class TutorielInstance {
private static TutorialClass instance;
private static Context context;

public static synchronized TutorialClass getInstance(){
if(instance==null){
instance=new TutorialClass(context);
}
return instance;
}


public static void setContext(Context c){
context=c;
}
}

然后在 Activity 中您可以使用

TutorielInstance.setContext(this);
TutorialClass tutorialClass=TutorielInstance.getInstance();

关于java - 实现只有一个实例的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42720227/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com