我正在尝试通过我的抽象 Charcter 类使用 Singleton 设计模式,以便所有子类都可以访问对象实例。这是我的单身课程:
class GatewayAccess
{
private static GatewayAccess ph;
// Constructor is 'protected'
protected GatewayAccess()
{
}
public static GatewayAccess Instance()
{
// Uses lazy initialization.
// Note: this is not thread safe.
if (ph == null)
{
ph = new GatewayAccess();
Console.WriteLine("This is the instance");
}
return ph;
}
}
我可以在我的 program.cs 中使用它来创建一个实例没问题:
static void Main(string[] args)
{
GameEngine multiplayer = new GameEngine(5);
Character Thor = new Warrior();
Thor.Name = "Raymond";
Thor.Display();
Thor.PerformFight();
Thor.PerformFight();
multiplayer.Attach(Thor);
GatewayAccess s1 = GatewayAccess.Instance();
GatewayAccess s2 = GatewayAccess.Instance();
if (s1 == s2)
{
Console.WriteLine("They are the same");
}
Console.WriteLine(Thor.getGamestate());
Console.ReadLine();
}
所以我想做的是允许子类,即战士访问网关的实例,我只是不知道如何做到这一点,因为继承的东西让我感到困惑。基本上,网关访问是对一次只能有一个连接的数据库的访问点。单例模式很容易理解,它只是它和继承的混合。我希望一旦我实现了这一点,我就可以以线程安全的方式做到这一点。
我还想知道如何删除单例实例,因为它是与数据库的连接,一次只能由一个角色对象使用,然后一旦角色对象完成,它必须释放单例对象对?
我试图在我的 Character 类中使用方法来完成这一切,但它不起作用。
我很感激这方面的任何帮助。