Singleton Pattern
π λͺ©μ°¨
- Introduction
- Singleton ν¨ν΄μ΄λ?
- Singleton ν¨ν΄ ꡬν
- Conclusion
- Reference
π Introduction
μλ νμΈμ μ΄λ² ν¬μ€ν μμλ design patternμ€ singleton ν¨ν΄μ λν΄μ λ°°μλ³΄κ² μ΅λλ€!
π Singleton ν¨ν΄μ΄λ?
μ΄λ¦μμ singleμ΄ λ€μ΄κ°λ κ²μΌλ‘ μ μΆν μ μλ―μ΄ μ 체 μμ€ν μμμ νλμ μΈμ€ν΄μ€λ₯Ό μ‘΄μ¬νλλ‘ λ³΄μ₯νλ κ°μ²΄ μμ±ν¨ν΄μ λλ€. λ°λΌμ, κ°μ²΄ 리ν°λ΄λ λͺ¨λ μ±κΈν€ ν¨ν΄μ΄λΌκ³ ν μ μμ΅λλ€. νμ§λ§ λͺ¨λ μμ±μ΄ λ€ κ³΅κ°κ° λμ΄μκΈ°μ λΉκ³΅κ°λ₯Ό λ§λ€λ μ λλ‘ λ singleton ν¨ν΄ μ λλ€.
π Singleton ν¨ν΄ ꡬν
Singletonμ κ°μ²΄ 리ν°λ΄ + ν΄λ‘μ
λ‘ κ΅¬νν μ μμ΅λλ€. λ€μ μ½λλ₯Ό λ΄μ£ΌμΈμ.
const singleton = (() => {
let instance;
const a = 'hello';
const initiate = () => ({
a: a,
b: () => {
console.log(a);
}
});
return {
getInstance: (name) => {
if (!instance) {
instance = initiate();
}
return instance;
}
}
})();
const first = singleton.getInstance();
const second = singleton.getInstance();
console.log(first === second); // true
console.log(first.a); // hello
first.b(); // hello
μ½λλ₯Ό μ΄ν΄λ³΄μλ©΄ singleton
μ΄λΌλ λ³μλ μ¦μ μ€ν ν¨μ(IIFE)λ‘μ¨ λ°λ‘ instanceλ₯Ό μμ±νκ² λ©λλ€. κ·Έλμ first === second
κ° μ°Έμ΄ λκ² λ©λλ€.
π Conclusion
Javascriptλ ν΄λμ€ κΈ°λ°μ μΈμ΄κ° μλλΌ κ·Έλ κ² μ μ©ν νΈμ μλλλ€. κ·ΈλΌμλ ν΄λΉ ν¨ν΄μ μλ κ²κ³Ό λͺ¨λ₯΄λ κ²μ μ²μ§μ°¨μ΄ λΌκ³ μκ°ν©λλ€. κ·ΈλΌ λ€μ μκ°μ λ§λμ~!