我今天陷入了一个问题,一位朋友建议我使用一个全球静态或更奇怪的单一州模式。 我花了几小时时间阅读单一州的情况,但一些东西仍然绕过我。
Background: What Im trying to accomplish is creating an instance of an API and use this one instance in all my classes (as opposed to making a new connection, etc).
似乎有大约100种方式创建单一州,但有一些帮助来自yoda。 我发现了一些可怕的安全例子。 .
public sealed class Singleton
{
public static Singleton Instance { get; private set; }
private Singleton()
{
APIClass api = new APIClass(); //Can this be done?
}
static Singleton() { Instance = new Singleton(); }
}
你们怎么会立即介绍这一新类别,以及如何把它从一个单独类别中提出来?
EDIT: I realize the Singleton class can be called with something like
Singleton obj1 = Singleton.Instance();
但是,我是否能够在APICES类(例如, ob1.Start)中查阅这些方法? (我不需要,只是要求)
EDIT #2:在检查答案方面,我可能已经是很早的,但我确实有一件小事,仍然给我造成问题。 公益物协会只是罚款,不幸的是,它能够发动两次事件?
新法
public sealed class SingletonAPI
{
public static SingletonAPI Instance { get; private set; }
private SingletonAPI() {}
static SingletonAPI() { Instance = new SingletonAPI(); }
// API method:
public void Start() { API myAPI = new API();}
}
但是,如果我试图这样做的话......
SingletonAPI api = SingletonAPI.Instance;
api.Start();
SingletonAPI api2 = SingletonAPI.Instance; // This was just for testing.
api2.Start();
我有一个错误,说我不能开一个以上的例子。