μΌ | μ | ν | μ | λͺ© | κΈ | ν |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- tcp
- OOP
- Dialog
- κ°μ²΄μ§ν₯νλ‘κ·Έλλ°
- di
- 2024-08-21
- νλ IT&E
- AndroidStudio
- http method
- menutab
- μ±μ©νμ ν
- reflection
- OpenAPI
- Python
- fontstyle
- URN
- Kotlin
- κΈ°μ΄100μ
- μ½λμ
- datepicker
- Android Studio
- μ΄λ Έν μ΄μ
- swagger
- udp
- FACTORY
- uri
- Factory Method Pattern
- IOC
- 2024-08-20
- url
dingdong coding
Singleton Pattern λ³Έλ¬Έ
νμμ±
λ¨Όμ Singleton ν¨ν΄μ μ μ¬μ©ν΄μΌνλμ§μ λν΄ μμλ΄ μλ€.
μΉ μ΄ν리μΌμ΄μ μ ν λͺ μ μ μ κ° μλ μ¬λ¬ μ μ κ° μ΄μ©νλ©° κ°μ μλΉμ€λ₯Ό λμ λ€λ°μ μΌλ‘ μ¬μ©ν©λλ€.
μ±κΈν€ ν¨ν΄μ μ μ©νμ§ μμ μΉ μ΄ν리μΌμ΄μ μ΄λΌλ©΄ μμ²μ λ°μ λ λ§λ€ μμ² λ°μ μλΉμ€μ λν μλ‘μ΄ κ°μ²΄λ₯Ό μμ±νκ³ μλ©Έμν€λ κ³Όμ μ 무μν λ°λ³΅ν κ²μ λλ€.
μ΄ κ³Όμ μμ μ¬ν λ©λͺ¨λ¦¬ λλΉκ° λ°μνκ² λλ©° μ΄μ κ°μ λ©λͺ¨λ¦¬ λλΉλ₯Ό ν΄κ²°νκΈ° μν΄ μ°λ¦¬λ μ±κΈν€ ν¨ν΄μ μ¬μ©ν©λλ€.
Singleton Pattern
• κ°μ²΄(μΈμ€ν΄μ€)κ° μ€μ§ 1κ°λ§ μ‘΄μ¬ν΄μΌνλ κ²½μ° μ¬μ©ν©λλ€.
• κ°μ²΄κ° νμ¬ JVMμμ νλλ§ μμ΄μΌνλ ν¨ν΄
• private μμ±μ μΈλΆμμ new ν€μλλ₯Ό μ¬μ©ν΄ κ°μ²΄λ₯Ό 2κ° μ΄μ μμ±νμ§ λͺ»νλλ‘ λ§μ΅λλ€.
• μΈμ€ν΄μ€κ° μ€μ§ νλλ§ μμ±λλ κ²μ 보μ₯νκ³ μ΄λμμλ μ΄ μΈμ€ν΄μ€μ μ κ·Όν μ μλλ‘ νλ λμμΈ ν¨ν΄
- μ μΈμ, μ±νμ JAVA κ°μ²΄ μ§ν₯ λμμΈ ν¨ν΄, νλΉλ―Έλμ΄ p201
• Singleton
: 'λ¨ νλμ μμλ§μ κ°μ§ μ§'μ΄λΌλ μν μ΄λ‘ μμ μ λ
: νλμ μΈμ€ν΄μ€λ§μ μμ±νλ μ± μμ΄ μμΌλ©° getInstance λ©μλλ₯Ό ν΅ν΄μλ§ λͺ¨λ ν΄λΌμ΄μΈνΈμκ² λμΌν μΈμ€ν΄μ€λ₯Ό λ°ν λ° μ‘°ννλ μμ μ μν
• getInstance λ©μλ
: νμ κ°μ μΈμ€ν΄μ€λ₯Ό λ°ν
: getInstance λ©μλλ₯Ό ν΅ν΄ κ°μ²΄ μμ±μ μμ²νλ©΄ μ΄λ―Έ κ°μ²΄κ° μμ±λ κ²½μ°μλ κ°μ²΄λ₯Ό λ°ννκ³ μ²μ μμ±ν κ²½μ°μλ μμ±μλ₯Ό νΈμΆν΄ κ°μ²΄λ₯Ό μμ±ν©λλ€.
public class Singleton {
// static μμμ κ°μ²΄ μΈμ€ν΄μ€λ₯Ό νλ 미리 μμ±ν΄μ μ¬λ €λλ€.
private static final Singleton instance = new Singleton();
// ν΄λΉ κ°μ²΄λ getInstance()λ©μλλ₯Ό ν΅ν΄μλ§ μ‘°νκ°λ₯ν¨
// νμ κ°μ μΈμ€ν΄μ€ λ°ν
public static Singleton getInstance(){
return instance;
}
// νλμ κ°μ²΄ μΈμ€ν΄μ€λ§ μ‘΄μ¬ν΄μΌνλ―λ‘ μμ±μλ₯Ό privateμΌλ‘ μ μΈ
// μΈλΆμμ κ°μ²΄ μΈμ€ν΄μ€κ° μμ±λλ κ² λ°©μ§
private Singleton(){
}
public void logic(){
System.out.println("μ±κΈν€ κ°μ²΄ νΈμΆ");
}
}
@Test
@DisplayName("μ±κΈν€ ν¨ν΄ μ μ©ν κ°μ²΄")
void singletonServiceTest(){
Singleton singleton1 = Singleton.getInstance();
Singleton singleton2 = Singleton.getInstance();
System.out.println("singleton1 = " + singleton1);
System.out.println("singleton2 = " + singleton2);
assertThat(singletonService1).isSameAs(singletonService2);
}
ν μ€νΈ κ²°κ³Ό κ°μ κ°μ²΄ μΈμ€ν΄μ€κ° νΈμΆλ κ²μ λ³Ό μ μμ΅λλ€.
μ΄μ²λΌ μ±κΈν€ ν¨ν΄μ μ¬μ©νλ€λ©΄ μμ²μ΄ μ¬ λλ§λ€ κ°μ²΄λ₯Ό μλ‘ μμ±νλ κ²μ΄ μλλΌ, μ΄λ―Έ λ§λ€μ΄μ§ κ°μ²΄λ₯Ό 곡μ ν΄ ν¨μ¨μ μΌλ‘ μ¬μ¬μ©ν μ μμ΅λλ€.
'π°JAVA > Design Pattern' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
Strategy Pattern (0) | 2022.07.06 |
---|---|
Factory Method Pattern (0) | 2022.07.05 |
[ Object-Oriented Programming ] κ°μ²΄μ§ν₯ νλ‘κ·Έλλ° (0) | 2022.01.24 |