生成パターン
クラスのインスタンスが1つだけであることを保証し、グローバルなアクセス手段を提供する。
public class ConfigManager {
private static volatile ConfigManager instance;
private Map<String, String> config;
private ConfigManager() {
config = new HashMap<>();
loadConfig();
}
public static ConfigManager getInstance() {
if (instance == null) {
synchronized (ConfigManager.class) {
if (instance == null) {
instance = new ConfigManager();
}
}
}
return instance;
}
private void loadConfig() {
// 設定ファイル読み込み処理
}
public String get(String key) {
return config.get(key);
}
public void set(String key, String value) {
config.put(key, value);
}
}
// どこからでも同じインスタンスにアクセス
ConfigManager config = ConfigManager.getInstance();
String dbUrl = config.get("database.url");
// 別の場所でも同じインスタンス
ConfigManager sameConfig = ConfigManager.getInstance();
sameConfig.set("app.mode", "production");
public enum DatabaseConnection {
INSTANCE;
private Connection connection;
DatabaseConnection() {
// 接続初期化
}
public Connection getConnection() {
return connection;
}
}
以下のSingletonパターンをカスタマイズしてください。
【要件】
・クラス名: [例: AppConfig]
・用途: [例: アプリケーション設定管理]
・保持するデータ: [例: Properties型の設定値]
・スレッドセーフ: [必要/不要]
・初期化タイミング: [起動時/初回アクセス時]
【ベースコード】
public class ConfigManager {
private static volatile ConfigManager instance;
private Map<String, String> config;
private ConfigManager() {
config = new HashMap<>();
}
public static ConfigManager getInstance() {
if (instance == null) {
synchronized (ConfigManager.class) {
if (instance == null) {
instance = new ConfigManager();
}
}
}
return instance;
}
}
【追加してほしい機能】
・設定ファイル(application.properties)からの読み込み
・環境変数の上書きサポート
・リロード機能
データベース接続用のSingletonクラスを作成してください。 【要件】 ・接続先: [MySQL/PostgreSQL/Oracle] ・接続プール: [HikariCP/DBCP2/なし] ・最大接続数: [10] ・タイムアウト: [30秒] 【必要なメソッド】 ・getConnection(): Connection取得 ・releaseConnection(Connection): 接続返却 ・shutdown(): プール終了