比如:有Form1、Form2两个窗体,和一个DBClient负责数据库访问的类,当Form1需要与服务器通讯时,需要实例化DBClient,才能使用DBClient的方法,当Form2与服务器通讯的时候又要实例化后,才能调用方法,请问有没有办法在程序Main方法中实例化DBClient,form1和Form2无需实例化,直接调用具体方法即可????之前朋友说可以使用单例模式,可我使用单例模式后,Form1在数据库中创建了一个临时表,Form2缺无法访问临时表,两个窗体的数据库会话并不一样,是否说明单例模式并不是同一实例?
谢谢,求教了!
谢谢,求教了!
class DBClient
{
private DBClient() {
}
static DBClient instance;
static object obj = new object();
public static DBClient GetInstance()
{
if (instance == null)
{
lock (obj)
{
if (instance == null)
{
instance = new DBClient(); }
}
}
return instance;
}
}调用: DBClient db = DBClient.GetInstance();
db.方法();
师兄,再请教一下
你提供的单例,是在有代码的情况下,修改类的代码吧,如果没有代码,而是一个已经编译好的DLL,该如何实现单例?
需要的地方 client.方法
在外面简单包装一下:
class MyDBClient
{
private MyDBClient() {
}
static DBClient instance;
static object obj = new object();
public static DBClient GetInstance()
{
if (instance == null)
{
lock (obj)
{
if (instance == null)
{
instance = new DBClient();
}
}
}
return instance;
}
}