-
[SpringBoot] ์ฑ๊ธํค ํจํด(singleton pattern) (feat: Spring)๐ปProgramming/SpringBoot 2024. 3. 27. 22:36
์ฑ๊ธํค ํจํด์ด๋
๋จ ํ๋์ ์ ์ผํ ๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ธฐ ์ํ ์ฝ๋ ํจํด์ด๋ค.
๋ฉ๋ชจ๋ฆฌ ์ ์ฝ์ ์ํด ์ธ์คํด์ค๊ฐ ํ์ํ ๋ ๋๊ฐ์ ์ธ์คํด์ค๋ฅผ ์๋ก ๋ง๋ค์ง ์๊ณ ๊ธฐ์กด์ ์ธ์คํด์ค๋ฅผ ๊ฐ์ ธ์ ํ์ฉํ๋ ๊ธฐ๋ฒ์ ๋งํ๋ค.
์ฑ๊ธํค ํจํด์ด ์ ์ฉ๋ ๊ฐ์ฒด๊ฐ ํ์ํ ๊ฒฝ์ฐ๋ ๊ทธ ๊ฐ์ฒด๊ฐ ๋ฆฌ์์ค๋ฅผ ๋ง์ด ์ฐจ์งํ๋ ์ญํ ์ ํ๋ ๋ฌด๊ฑฐ์ด ํด๋์ค์ผ ๋ ์ ํฉํ๋ค.
์ฑ๊ธํค ํจํด์ ๊ตฌํ
public class SingletonService { private static final SingletonService instance = new SingletonService(); public static SingletonService getInstance() { return instance; } private SingletonService() { } public void logic() { System.out.println("์ฑ๊ธํค ๊ฐ์ฒด ๋ก์ง ํธ์ถ"); } }
1. ์ฐ์ , static ์์ญ์ ๊ฐ์ฒด๋ฅผ ๋ฑ ํ๊ฐ๋ง ์์ฑํ๋ค.
2. ์ด ๊ฐ์ฒด ์ธ์คํด์ค๊ฐ ํ์ํ ๊ฒฝ์ฐ getInstance() ๋ฉ์๋๋ฅผ ํตํด์๋ง ์กฐํํ๋๋ก ํ์ฉ -> ๊ฐ์ฒด ํ๋๋ง ์์ฑํ๊ณ ์ฌ๋ฌ ๋ณ์์ ๋ถ๋ฌ์๋ ๋๋ ค์ฐ๋๋ก ํจ.
3. ์์ฑ์๋ฅผ private์ผ๋ก ์ ์ธํ์ฌ ์ธ๋ถ์์ new ํค์๋๋ฅผ ์ฌ์ฉํ ๊ฐ์ฒด ์์ฑ์ ํ์ง ๋ชปํ๋๋ก ํ๋ค.
๊ฒฐ๊ณผ
SingletonService singletonService1 = SingletonService.getInstance(); SingletonService singletonService2 = SingletonService.getInstance(); System.out.println("singletonService1 = " + singletonService1); System.out.println("singletonService2 = " + singletonService2);
๋ฅผ ์ถ๋ ฅํด๋ณด๋ฉด,
๊ฐ์ ๊ฐ์ฒด๊ฐ ์ฌ์ฉ๋๊ณ ์๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
์ฑ๊ธํค ํจํด์ ๋จ์
1. ๋ชจ๋๊ฐ ์์กด์ฑ์ด ๋์์ง๋ค.
2. SOLID ์์น ์๋ฐฐ ์ฌ๋ก๊ฐ ๋ง๋ค.
ex. ํด๋ผ์ด์ธํธ๊ฐ ์ญํ ์ด ์๋ ๊ตฌํ ํด๋์ค์ ์์กด -> DIP ์๋ฐ, OCP ์๋ฐ.
3. TDD ๋จ์ ํ ์คํธํ๊ธฐ ์ด๋ ค์.
4. ์์ ํด๋์ค๊ฐ ์์๋ฐ๊ธฐ ์ด๋ ค์.
5. ์ ์ฐ์ฑ ๋จ์ด์ง
6. ์ฑ๊ธํค ํจํด์ ๊ตฌํํ๋ ์ฝ๋๊ฐ ๋ง์ด ํ์.
์ฑ๊ธํค ์ปจํ ์ด๋
์คํ๋ง ์ปจํ ์ด๋๋ ์ฑ๊ธํค ํจํด์ ๋ฌธ์ ์ ์ ํด๊ฒฐํ๋ฉด์, ๊ฐ์ฒด ์ธ์คํด์ค๋ฅผ ์ฑ๊ธํค(1๊ฐ๋ง ์์ฑ)์ผ๋ก ๊ด๋ฆฌํ๋ค. ์ด๋ ๊ฒ ์คํ๋ง์์ ์ฑ๊ธํค์ผ๋ก ๊ด๋ฆฌ๋๋ ๊ฐ์ฒด๋ฅผ ์คํ๋ง ๋น์ด๋ผ๊ณ ํ๋ค.
์ด๋ ๊ฒ ์ฑ๊ธํค ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ๊ด๋ฆฌํ๋ ๊ธฐ๋ฅ์ ์ฑ๊ธํค ๋ ์ง์คํธ๋ฆฌ๋ผ๊ณ ํ๋ค.
์ด๋ ๊ฒ ์คํ๋ง์ด ์ฑ๊ธํค ํจํด์ ๋์ ๊ตฌํํด์ฃผ๋ฉด์ ๊ฐ๋ฐ์๋ ์ฑ๊ธํค ํจํด์ ์ํ ์ฝ๋๋ฅผ ์์ฑํ ํ์๊ฐ ์๊ณ , DIP, OCP, ํ ์คํธ, private ์์ฑ์์ ๋จ์ ์ ๋ณด์ํ๋ฉด์ ์ฑ๊ธํค์ ์ฌ์ฉํ ์ ์๋ค.
References
์ธํ๋ฐ - ๊น์ํ๋ ๊ฐ์
๊น์ํ ์คํ๋ง ํต์ฌ ์๋ฆฌ - ๊ธฐ๋ณธํธ ๊ฐ์ - ์ธํ๋ฐ
์คํ๋ง ์ ๋ฌธ์๊ฐ ์์ ๋ฅผ ๋ง๋ค์ด๊ฐ๋ฉด์ ์คํ๋ง์ ํต์ฌ ์๋ฆฌ๋ฅผ ์ดํดํ๊ณ , ์คํ๋ง ๊ธฐ๋ณธ๊ธฐ๋ฅผ ํ์คํ ๋ค์ง ์ ์์ต๋๋ค., ์คํ๋ง ํต์ฌ ์๋ฆฌ๋ฅผ ์ดํดํ๊ณ , ์ฑ์ฅํ๋ ๋ฐฑ์๋ ๊ฐ๋ฐ์๊ฐ ๋์ด๋ณด์ธ์! ๐ข
www.inflearn.com
๐ ์ฑ๊ธํค(Singleton) ํจํด - ๊ผผ๊ผผํ๊ฒ ์์๋ณด์
Singleton Pattern ์ฑ๊ธํค ํจํด์ ๋์์ธ ํจํด๋ค ์ค์์ ๊ฐ์ฅ ๊ฐ๋ ์ ์ผ๋ก ๊ฐ๋จํ ํจํด์ด๋ค. ํ์ง๋ง ๊ฐ๋จํ ๋งํผ ์ด ํจํด์ ๋ํด ์ฝ๋๋ง ๋์ ธ์ฃผ๊ณ ๋๋ด๋ฒ๋ฆฌ๋ ๊ฒฝ์ฐ๊ฐ ์์ด, ์ด๋์ ์ฐ์ด๋์ง ์ด๋ ํ ๋ฌธ
inpa.tistory.com
'๐ปProgramming > SpringBoot' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ