π Singleton Pattern μ΄λ?
μΈμ€ν΄μ€κ° μ€μ§ 1κ°λ§ μμ±λλ ν¨ν΄
μμ±μκ° μ¬λ¬λ² νΈμΆλμ΄λ μ€μ λ‘ μμ±λλ κ°μ²΄λ νλμ΄κ³ , μ΅μ΄ μμ± μ΄ν μμ±μκ° νΈμΆλλ©΄ μμ±νλ κ°μ²΄λ₯Ό 리ν΄νλ ν¨ν΄
public class Singleton{
// 1. ν΄λμ€μ μ μΌν μΈμ€ν΄μ€λ₯Ό μ μ₯ν μ μ νλ
private static Singleton instance;
// 2. μμ±μλ₯Ό privateμΌλ‘ μ μΈνμ¬ μΈλΆμμ κ°μ²΄ μμ± λΆκ°λ₯
private Singleton() {}
// 3. μΈμ€ν΄μ€μ μ κ·Όν μ μλ μ μ λ©μλ μ 곡
public static Singleton getInstance() {
if (instance == null) {
// μΈμ€ν΄μ€κ° μλ€λ©΄ μμ±
instance = new Singleton();
}
return instance;
}
}
μΈμ€ν΄μ€λ₯Ό μ μ νλμ μ¬λ €λκ³ , μμ±μκ° νΈμΆμ΄ λλ©΄ κ°μ²΄ 리ν΄
μ Singleton Patternμ μ¬μ©ν κΉ?
μμ£Ό μ¬μ©λμ§λ§, κ΅³μ΄ μ¬λ¬ λ²μ κ°μ²΄λ₯Ό μμ± ν νμκ° μλ κ²½μ° λ¦¬μμ€ λλΉκ° λ°μ
μ΄λ° κ²½μ° μ±κΈν€ ν¨ν΄μ μ μ©νμ¬ λ©λͺ¨λ¦¬λ₯Ό μ μ½ν μ μμ
public class Configuration {
// μ μΌν μΈμ€ν΄μ€λ₯Ό μ μ₯ν μ μ νλ
private static Configuration instance;
// μ€μ κ°μ μ μ₯νλ νλ (μμλ‘ λ°μ΄ν°λ² μ΄μ€ URL)
private String databaseUrl;
// private μμ±μ: μΈλΆμμ κ°μ²΄ μμ± λΆκ°λ₯
private Configuration() {
// μ€μ νμΌμ΄λ νκ²½ λ³μμμ μ€μ κ°μ μ½μ΄μ€λ μμ
this.databaseUrl = "jdbc:mysql://localhost:3306/mydb";
}
// μ μΌν μΈμ€ν΄μ€λ₯Ό μ 곡νλ λ©μλ
public static Configuration getInstance() {
if (instance == null) {
instance = new Configuration(); // μ΅μ΄ μμ² μ μΈμ€ν΄μ€ μμ±
}
return instance;
}
// μ€μ κ°μ κ°μ Έμ€λ λ©μλ
public String getDatabaseUrl() {
return this.databaseUrl;
}
}
μ΄μ μ΄λ€ ν΄λμ€μμλ Configurationμ μΈμ€ν΄μ€μ μ κ·Ό ν μ μλ€
μ μΌν μΈμ€ν΄μ€λ₯Ό μ μ νλμ μ¬λ €λκΈ° λλ¬Έμ λ°μ΄ν°κ° μ½κ² 곡μ ν μ μλ€.
κ·Έλ λ€λ©΄ λ¨μ μ?
κ°μ²΄κ° μ μμ μΌλ‘ μ°Έμ‘°λλ―λ‘ κ°μ²΄κ° κ²°ν©λ μ¦κ°
μμ λ° μ μ§λ³΄μ νλ€
μ±κΈν€μ μ¬λ¬ μ€λ λκ° λμμ μ κ·Όν κ²½μ°, μΈμ€ν΄μ€κ° μ¬λ¬κ° μμ±λκ±°λ λ³μκ°μ΄ μΌκ΄μ±μ΄ κΉ¨μ§ μ μκΈ° λλ¬Έμ, λ©ν° μ€λ λ νκ²½μμλ λκΈ°ν μ²λ¦¬λ₯Ό ν΄μΌνλ€.