すべてのサブクラスがオブジェクトインスタンスにアクセスできるように、抽象文字クラスを介してシングルトンデザインパターンを使用しようとしています。ここに私のシングルトンクラスがあります:
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();
}
だから私がしたいのは、サブクラス、つまり戦士がゲートウェイのインスタンスにアクセスできるようにすることです。継承が混乱しているため、これを行う方法がわかりません。基本的に、ゲートウェイ アクセスは、一度に 1 つの接続のみを持つことができるデータベースへのアクセス ポイントです。シングルトン パターンは理解するのに十分簡単で、それと継承を組み合わせただけです。これを達成したら、スレッドセーフな方法で実行できることを望んでいました。
また、Singleton インスタンスはデータベースへの接続であり、一度に 1 つの文字オブジェクトでしか使用できないため、Singleton インスタンスを削除する方法についても考えていました。右?
Character クラスのメソッドを使用してこれらすべてを実行しようとしましたが、うまくいきません。
これについて何か助けていただければ幸いです。