β
μ±κΈν€ ν¨ν΄
μ ν리μΌμ΄μ μ΄ μμλ λ μ΄λ€ ν΄λμ€κ° μ΅μ΄ νλ²λ§ λ©λͺ¨λ¦¬λ₯Ό ν λΉνκ³ (Static) κ·Έ λ©λͺ¨λ¦¬μ μΈμ€ν΄μ€λ₯Ό λ§λ€μ΄ μ¬μ©νλ λμμΈν¨ν΄.
μμ±μκ° μ¬λ¬ μ°¨λ‘ νΈμΆλλλΌλ μ€μ λ‘ μμ±λλ κ°μ²΄λ νλκ³ μ΅μ΄ μμ± μ΄νμ νΈμΆλ μμ±μλ μ΅μ΄μ μμ±ν κ°μ²΄λ₯Ό λ°ννλ€. (μλ°μμ μμ±μλ₯Ό privateλ‘ μ μΈν΄μ μμ± λΆκ°νκ² νκ³ getInstance()λ‘ λ°μμ°κΈ°λ ν¨)
=> μ±κΈν€ ν¨ν΄μ λ¨ νλμ μΈμ€ν΄μ€λ₯Ό μμ±ν΄ μ¬μ©νλ λμμΈ ν¨ν΄μ΄λ€.
(μΈμ€ν΄μ€κ° νμ ν λ λκ°μ μΈμ€ν΄μ€λ₯Ό λ§λ€μ΄ λ΄λ κ²μ΄ μλλΌ, λμΌ(κΈ°μ‘΄) μΈμ€ν΄μ€λ₯Ό μ¬μ©νκ²ν¨)
β
μ±κΈν€ ν¨ν΄μ μ°λ μ΄μ
κ³ μ λ λ©λͺ¨λ¦¬ μμμ μ»μΌλ©΄μ νλ²μ newλ‘ μΈμ€ν΄μ€λ₯Ό μ¬μ©νκΈ° λλ¬Έμ λ©λͺ¨λ¦¬ λλΉλ₯Ό λ°©μ§ν μ μμ
λν μ±κΈν€μΌλ‘ λ§λ€μ΄μ§ ν΄λμ€μ μΈμ€ν΄μ€λ μ μ μΈμ€ν΄μ€μ΄κΈ° λλ¬Έμ λ€λ₯Έ ν΄λμ€μ μΈμ€ν΄μ€λ€μ΄ λ°μ΄ν°λ₯Ό 곡μ νκΈ° μ½λ€.
DBCP(DataBase Connection Pool)μ²λΌ 곡ν΅λ κ°μ²΄λ₯Ό μ¬λ¬κ° μμ±ν΄μ μ¬μ©ν΄μΌνλ μν©μμ λ§μ΄ μ¬μ©.
(μ°λ λν, μΊμ, λνμμ, μ¬μ©μ μ€μ , λ μ§μ€νΈλ¦¬ μ€μ , λ‘κ·Έ κΈ°λ‘ κ°μ²΄λ±)
μλλ‘μ΄λ μ± κ°μ κ²½μ° κ° μ‘ν°λΉν°λ ν΄λμ€λ³λ‘ μ£Όμ ν΄λμ€λ€μ μΌμΌμ΄ μ λ¬νκΈ°κ° λ²κ±°λ‘κΈ° λλ¬Έμ μ±κΈν€ ν΄λμ€λ₯Ό λ§λ€μ΄ μ΄λμλ μ κ·Όνλλ‘ μ€κ³νλ κ²μ΄ νΈνκΈ° λλ¬Έ...
+ μΈμ€ν΄μ€κ° μ λμ μΌλ‘ νκ°λ§ μ‘΄μ¬νλ κ²μ 보μ¦νκ³ μΆμ κ²½μ° μ¬μ©.
+ λ λ²μ§Έ μ΄μ©μλΆν°λ κ°μ²΄ λ‘λ© μκ°μ΄ νμ νκ² μ€μ΄ μ±λ₯μ΄ μ’μμ§λ μ₯μ !
β
μ±κΈν€ ν¨ν΄μ λ¬Έμ μ
μ±κΈν€ μΈμ€ν΄μ€κ° λ무 λ§μ μΌμ νκ±°λ λ§μ λ°μ΄ν°λ₯Ό 곡μ μν¬ κ²½μ° λ€λ₯Έ ν΄λμ€μ μΈμ€ν΄μ€λ€ κ°μ κ²°ν©λκ° λμμ Έ "κ°λ°©-νμ μμΉ" μ μλ°°νκ² λλ€. (=κ°μ²΄ μ§ν₯ μ€κ³ μμΉμ μ΄κΈλ¨)
λ°λΌμ μμ μ΄ μ΄λ €μμ§κ³ ν
μ€νΈνκΈ° μ΄λ €μμ§λ€.
λν λ©ν°μ°λ λνκ²½μμ λκΈ°νμ²λ¦¬λ₯Ό μνλ©΄ μΈμ€ν΄μ€κ° λκ°κ° μμ±λλ€λ μ§ νλ κ²½μ°κ° λ°μν μ μμ
κ°λ°μ ν λ νμ λ€μ΄μ¨ gotoλ μ°λ©΄ μλΌ! μ μ κ°μ²΄λ μ μ’μκ±°μΌ! λΌλ λ§ μ²λΌ κΌ νμν κ²½μ°μλλ©΄ μ§μν΄μΌν¨. // μ μ ν μ μ°λ©΄ μμ£Ό μ’μ, (κ·Έκ² μ΄λ ΅μ§)
μ μμ μΈ μ κ·Όμ μ μ 곡
λ‘κΉ
, μ½ν
μΈ λ‘λ©, κ²μ μ μ₯ λ± μ¬λ¬ λ΄λΆ μμ€ν
μμ νμΌ μμ€ν
λνΌ ν΄λμ€λ₯Ό μ¬μ©ν κ²μ΄λ€. μ΄λ€ μμ€ν
μμ νμΌ μμ€ν
ν΄λμ€ μΈμ€ν΄μ€λ₯Ό λ°λ‘ μμ±ν μ μμΌλ―λ‘ μ±κΈν΄ ν¨ν΄μ νλμ μΈμ€ν΄μ€λ§ μμ±νλ κ²μ λν΄μ, κ·Έ μΈμ€ν΄μ€λ₯Ό μ μμμ μ κ·Όν μ μλ λ©μλλ₯Ό μ 곡νλ€.
class FileSystem {
public:
static FileSystem& instance()
{
// κ²μΌλ₯Έ μ΄κΈ°ν
if(instance_ NULL) {
instance_ = new FileSystem();
}
return *instance_;
}
private:
FileSystem() {}
static FileSystem* instance_;
}β
instance_ μ μ λ©€λ² λ³μλ ν΄λμ€ μΈμ€ν΄μ€λ₯Ό μ μ₯νλ€. μμ±μκ° privateμ΄κΈ° λλ¬Έμ λ°μμλ μμ±ν μ μλ€. instance() μ μ λ©μλλ μ½λ μ΄λμμλ μ±κΈν΄ μΈμ€ν΄μ€μ μ κ·Όν μ μκ² νκ³ , μ±κΈν΄μ μ€μ λ‘ νμλ‘ ν λκΉμ§ μΈμ€ν΄μ€ μ΄κΈ°νλ₯Ό 미루λ μν (κ²μΌλ₯Έ μ΄κΈ°ν)λ νλ€.
μμ¦μλ μ΄λ κ²λ λ§λ λ€.
class FileSystem
{
public:
static FileSystem& instance()
{
static FileSystem* instance = new FileSystem();
return *instance;
}
private:
FileSystem() {}
}
C++ 11μμλ μ μ μ§μ λ³μ μ΄κΈ°ν μ½λκ° λ©ν°μ€λ λ νκ²½μμλ λ± νλ² μ€νλμ΄μΌ νλ€. μ¦, μ΅μ C++ μ»΄νμΌλ‘ μ»΄νμΌνλ©΄ μ΄ μ½λλ μ΄μ μμ μλ λ¬λ¦¬ μ€λ λ μμ νλ€.
μΆμ²: https://boycoding.tistory.com/109 [μλ
μ½λ©]
'λμμΈν¨ν΄' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[λμμΈν¨ν΄] μ»΄ν¬μ§νΈ(Composite) ν¨ν΄ (0) | 2024.08.25 |
---|---|
[λμμΈν¨ν΄] μ λ΅(Strategy) ν¨ν΄ (0) | 2024.08.24 |
[λμμΈν¨ν΄] λ°μ½λ μ΄ν° ν¨ν΄ (0) | 2024.08.23 |
μΆμ μ±κΈν€ ν¨ν΄(Abstract Singleton) (0) | 2023.03.20 |
λκΈ