์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- Dialog
- Python
- tcp
- fontstyle
- http method
- menutab
- IOC
- uri
- di
- ์ฝ๋์
- OpenAPI
- url
- FACTORY
- ํ๋ IT&E
- ์ด๋ ธํ ์ด์
- ๊ฐ์ฒด์งํฅํ๋ก๊ทธ๋๋ฐ
- Kotlin
- 2024-08-21
- udp
- ๊ธฐ์ด100์
- datepicker
- 2024-08-20
- ์ฑ์ฉํ์ ํ
- OOP
- swagger
- AndroidStudio
- reflection
- Android Studio
- URN
- Factory Method Pattern
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 |