※ ChatGPTを利用し、要約された質問です(原文:singletonによるインターフェイスの実装)
Java初心者のためのインターフェイスの実装方法とインスタンス生成の改善方法
このQ&Aのポイント
Java初心者の方がインターフェイスの実装方法とインスタンス生成の改善方法について質問されています。
具体的には、AクラスがBクラスのインスタンスを生成する際に、無限ループが発生してしまう問題について解決方法を知りたいとのことです。
また、Cクラス、Dクラス、Eクラスにおいて、インスタンスの生成を一度だけ行うようにするための記述方法についても教えてほしいとのことです。
Java勉強中の初心者です。
標題の件についてお願いします。
以下、簡単に条件を説明させていただきます。
Aクラス = メインクラス
Bクラス = インターフェイスクラス
Cクラス = DとEを動的に生成するクラス
Dクラス = インターフェイスを実装するクラス
Eクラス = インターフェイスを実装するクラス
AクラスにB.getInstance(name)があります。
for文の無限ループがあります。
Cクラス
class C {
public static B getInstance(String name)
{
// Aクラスのaと変数nameが比較して一致したら
// Dクラスのインスタンス生成
// 一致しなかったらEクラスのインスタンス生成
if(A.a.equals(name)){
return D.getInstance();
}else{
return E.getInstance();
}
}
}
Dクラス
class D implements B{
private D() { }
public static D getInstance() {
D d = new D();
return d;
}
// インターフェイスでのメソッド省略します。
}
Eクラス
class E implements B{
private E() { }
public static E getInstance() {
E e = new E();
return e;
}
// インターフェイスでのメソッド省略します。
}
この条件の時にnewするたびにインスタンスが
生成されてしまいます。
インスタンスの生成が一度だけしか
生成されないようにするには、C,D,Eクラスで
どのように記述すればいいか悩んでいます。
(骨組みは書けましたが)
クラスを簡単に省略してわかりづらいと
思いますがよろしくお願いします。
お礼
ありがとうございました。 解決できました。