Deep Dive Into Design Patterns - ๋น๋ ํจํด
๐ก ๋น๋(Builder) ํจํด์ด๋?๊ฐ์ฒด๋ฅผ ์์ฑํ๊ธฐ ์ ์ ์ ์ง์ ์ผ๋ก ๊ฐ์ฒด์ ์ ๋ณด๋ฅผ ์์งํ์ฌ ๋ณต์กํ ๊ฐ์ฒด๋ค์ ๋จ๊ณ ๋ณ๋ก ์์ฑํ๋ ์์ฑ ๋์์ธ ํจํด์ ๋๋ค. ์์ฑ์์ ๋ค์ด๊ฐ ๋งค๊ฐ ๋ณ์๋ฅผ ๋ฉ์๋๋ก ํ๋ํ๋ ๋ฐ์๋ค์ด๊ณ ๋ง์ง๋ง์ ํตํฉ ๋น๋ํด์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๋ฐฉ์์ ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก๋ ์์ฑ์๋ฅผ ์ ๊ณตํ์ฌ ๊ฐ์ฒด๋ฅผ ์์ฑํ์ง๋ง, ์์ฑ ๊ฐ์ฒด์ ์ด๊ธฐ๊ฐ์ ์ฃผ๊ฑฐ๋ ์์ฑํ ํด๋์ค๋ฅผ ์ ํํ๊ณ ์ถ์ ๋ ๋ณํ์ด ํ์ํฉ๋๋ค. ์ฆ, ๊ฐ์ฒด ์์ฑ์ ํด๋์ค ๋ก์ง ๋ฐ์ผ๋ก ์ฎ๊ธธ ํ์๊ฐ ์์ ๋ ๋น๋ ํจํด์ ์ฌ์ฉํฉ๋๋ค.public static void main(String[] args) { // ์์ฑ์ ๋ฐฉ์ Hamburger hamburger = new Hamburger(2, 3, 0, 3, 0, 0); // ๋น๋ ๋ฐฉ์ Hambu..
Deep Dive Into Design Patterns - ํ๋ผ์ด์จ์ดํธ ํจํด
๐ก ํ๋ผ์ด์จ์ดํธ(Flyweight) ํจํด์ด๋?์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ๊ฐ์ฒด ์ธ์คํด์ค๋ฅผ ๊ณต์ ์์ผ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ์ต์ํํ๋ ๊ตฌ์กฐ ํจํด์ ๋๋ค. ๊ฐ ๊ฐ์ฒด์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์งํ๋ ๋์ ์ฌ๋ฌ ๊ฐ์ฒด๋ค ๊ฐ์ ์ํ์ ๊ณตํต ๋ถ๋ถ๋ค์ ๊ณต์ ํ์ฌ ์ฌ์ฉํ ์ ์๋ RAM์ ๋ ๋ง์ ๊ฐ์ฒด๋ค์ ํฌํจํ ์ ์๋๋ก ํฉ๋๋ค. ์์ฃผ ๋ณํ๋ ์์ฑ(extrinsic)๊ณผ ๋ณํ์ง ์๋ ์์ฑ(intrinsic)์ ๋ถ๋ฆฌํ๊ณ , ๋ณํ์ง ์๋ ์์ฑ์ ์บ์ํ์ฌ ์ฌ์ฌ์ฉํด ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ์ ์ค์ ๋๋ค. ๊ทธ๋์ ๋์ผํ๊ฑฐ๋ ์ ์ฌํ ๊ฐ์ฒด๋ค ์ฌ์ด์ ๊ฐ๋ฅํ ๋ง์ ๋ฐ์ดํฐ๋ฅผ ์๋ก ๊ณต์ ํ์ฌ ์ฌ์ฉํ๋๋ก ํ์ฌ ์ต์ ํ๋ฅผ ๋ ธ๋ฆฌ๋ ๊ฒฝ๋ ํจํด์ด๋ผ๊ณ ๋ถ๋ฆฝ๋๋ค. ๐ก ํด๋์ค ๋ค์ด์ด๊ทธ๋จ์ผ๋ก ๋ณธ ํ๋ผ์ด์จ์ดํธ ํจํดFlyweight : ๊ฒฝ๋ ๊ฐ์ฒด๋ฅผ ๋ฌถ๋ ์ธํฐํ์ด์ค.Flyweight State : ํ๋ผ์ด์จ์ด..
Deep Dive Into Design Patterns - ์ฑ ์ ์ฐ์ ํจํด
๐ก ์ฑ ์ ์ฐ์(Chain of Responsibility) ํจํด์ด๋?ํธ๋ค๋ฌ๋ค์ ์ฒด์ธ(์ฌ์ฌ)์ ๋ฐ๋ผ ์์ฒญ์ ์ ๋ฌํ ์ ์๊ฒ ํด์ฃผ๋ ํ๋ ๋์์ธ ํจํด์ ๋๋ค. ํด๋ผ์ด์ดํธ์ ์์ฒญ์ ๋ํ ์ธ์ธํ ์ฒ๋ฆฌ๋ฅผ ํ๋์ ๊ฐ์ฒด๊ฐ ๋ชฝ๋ ํ๋ ๊ฒ์ด ์๋, ์ฌ๋ฌ ๊ฐ์ ์ฒ๋ฆฌ ๊ฐ์ฒด๋ค๋ก ๋๋๊ณ , ์ด๋ค์ ์ฌ์ฌ(chain)์ฒ๋ผ ์ฐ๊ฒฐํด ์งํฉ ์์์ ์ฐ์์ ์ผ๋ก ์ฒ๋ฆฌํ๋ ํ๋ ํจํด์ ๋๋ค. ์ด๋ฌํ ์ฒ๋ฆฌ ๊ฐ์ฒด๋ค์ ํธ๋ค๋ฌ(handler)๋ผ๊ณ ๋ถ๋ฅด๋๋ฐ, ์์ฒญ์ ๋ฐ์ผ๋ฉด ๊ฐ ํธ๋ค๋ฌ๋ ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์๋์ง ํ๋จํ๊ณ , ์์ผ๋ฉด ์ฒด์ธ์ ๋ค์ ํธ๋ค๋ฌ๋ก ์ฒ๋ฆฌ์ ๋ํ ์ฑ ์์ ์ ๊ฐํฉ๋๋ค. ์ฒ๋ฆฌ์ ๋ํ ์ฑ ์์ ์์ฒญ์ ๋ณด๋ด๋ ์ชฝ(sender)๊ณผ ์์ฒญ์ ์ฒ๋ฆฌํ๋(receiver) ์ชฝ์ ๋ถ๋ฆฌํ์ฌ ๊ฐ ๊ฐ์ฒด๋ฅผ ๋ถํ์ผ๋ก ๋ ๋ฆฝ์ํค๊ณ ๊ฒฐํฉ๋๋ฅผ ๋์จํ๊ฒ ๋ง๋ค๋ฉฐ, ์ํฉ์ ๋ฐ๋ผ์ ์์ฒญ..
Deep Dive Into Design Patterns - ํ๋ก์ ํจํด
๐ก ํ๋ก์ ํจํด์ด๋?๋์ ์๋ณธ ๊ฐ์ฒด๋ฅผ ๋๋ฆฌํ์ฌ ๋์ ์ฒ๋ฆฌํ๊ฒ ํจ์ผ๋ก์จ ๋ก์ง์ ํ๋ฆ์ ์ ์ดํ๋ ํ๋ ํจํด์ ๋๋ค. “ํ๋ก์”์ ์ฌ์ ์ ์ธ ์๋ฏธ์ธ ‘๋๋ฆฌ์ธ’์ฒ๋ผ, ํด๋ผ์ด์ธํธ๊ฐ ๋์ ๊ฐ์ฒด๋ฅผ ์ง์ ์ฌ์ฉํ๋ ๊ฒ ์๋๋ผ ์ค๊ฐ์ ํ๋ก์(๋๋ฆฌ์ธ)์ ๊ฑฐ์ณ์ ์ฌ์ฉํ๋ ์ฝ๋ ํจํด์ ๋๋ค. ๋ฐ๋ผ์ ๋์ ๊ฐ์ฒด(Subject)์ ๋ฉ์๋๋ฅผ ์ง์ ์คํํ๋ ๊ฒ์ด ์๋, ๋์ ๊ฐ์ฒด์ ์ ๊ทผํ๊ธฐ ์ ์ ํ๋ก์(Proxy) ๊ฐ์ฒด์ ๋ฉ์๋๋ฅผ ์ ๊ทผํ ํ ์ถ๊ฐ์ ์ธ ๋ก์ง์ ์ฒ๋ฆฌํ๋ค ์ ๊ทผํ๊ฒ ๋ฉ๋๋ค. ํ๋ก์๋ ์ค์ ๊ฐ์ฒด์ ์ก์ธ์คํ์ง ์๊ณ , ์ ์์ ๋๋ ๋น์ ์์ ์ธ ๋ฉ์์ง๋ฅผ ์ฒ๋ฆฌํ ์ ์๊ฒ๋ ํฉ๋๋ค. ๐ก ํ๋ก์ ํจํด์ ์ฐ๋ ์ด์ ํ๋ก์ ํจํด์ ๋์ ํด๋์ค๊ฐ ๋ฏผ๊ฐํ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์๊ฑฐ๋ ์ธ์คํด์คํ ํ๊ธฐ์ ๋ฌด๊ฒ๊ฑฐ๋ ์ถ๊ฐ ๊ธฐ๋ฅ์ ๊ฐ๋ฏธํ๊ณ ์ถ์๋ฐ, ์๋ณธ ๊ฐ์ฒด๋ฅผ ์์ ..
Deep Dive Into Design Patterns - ์ค์ฌ์ ํจํด
๐ก ์ค์ฌ์(Mediator) ํจํด์ด๋? ๊ฐ์ฒด ๊ฐ์ ํผ๋์ค๋ฌ์ด ์์กด ๊ด๊ณ๋ค์ ์ค์ผ ์ ์๋ ํ๋ ๋์์ธ ํจํด์ ๋๋ค. ์ด ํจํด์ ๊ฐ์ฒด ๊ฐ์ ์ง์ ํต์ ์ ์ ํํ๊ณ ์ค์ฌ์ ๊ฐ์ฒด๋ฅผ ํตํด์๋ง ํ๋ ฅํ๋๋ก ํฉ๋๋ค. ์ค์ฌ์ ํจํด์ ๊ฐ ๊ฐ์ฒด๋ค์ ๊ฐํ ์ฐ๊ฒฐ(์ฐธ์กฐ)๋ฅผ ๋๊ณ , ๊ทธ ๋์ ์ปดํฌ๋ํธ๋ค์ด ํน์ ์ค์ฌ์ ๊ฐ์ฒด๋ฅผ ํธ์ถํ์ฌ ์ ์ ํ ์ปดํฌ๋ํธ๋ค๋ก ๋ฆฌ๋ค์ด๋ ์ ํ๊ฒ๋ ํฉ๋๋ค. ์ด๋ก ์ธํด ์ปดํฌ๋ํธ๋ค์ ๊ฐ์ ์ ์ผ๋ก ํ๋ ฅํ๊ฒ ๋๊ณ , ์์ญ ๊ฐ์ ๋๋ฃ ์ปดํฌ๋ํธ๋ค๊ณผ ๊ฒฐํฉ๋๋ ๋์ ๋จ์ผ ์ค์ฌ์ ํด๋์ค์๋ง ์์กดํฉ๋๋ค. โญ ์ต์๋ฒ ํจํด๊ณผ ์ค์ฌ์ ํจํด? ์ต์๋ฒ ํจํด์ 1๊ฐ์ ๋ฐํ์์ N๊ฐ์ ๊ตฌ๋ ์๊ฐ ์กด์ฌํ์ฌ ์ต์๋ฒ๊ฐ ๋ฐํ์ ๋ด๋นํ๊ณ ์ค์ฌ์ ํจํด์ M๊ฐ์ ํผ๋ธ๋ฆฌ์ ์ N๊ฐ์ ๊ตฌ๋ ์ ์ฌ์ด์์ 1๊ฐ์ ์ค์ฌ์๋ฅผ ํตํด ํต์ ํฉ๋๋ค. ์ต์๋ฒ ํจํด์ ์ฌ์ฌ์ฉ์ฑ์ ์ข์ง๋ง ..
Deep Dive Into Design Patterns - ์ต์๋ฒ ํจํด
๐ก ์ต์๋ฒ(Observer) ํจํด์ด๋? ๊ฐ์ฒด์ ๋ฐ์ํ๋ ๋ชจ๋ ์ด๋ฒคํธ์ ๋ํ์ฌ ์ต์๋ฒ(๊ด์ฐฐ์)๋ค์๊ฒ ์๋ฆฌ๊ณ , ์ต์๋ฒ๋ค์ ์๋ฆผ์ ๋ฐ์ ์กฐ์น๋ฅผ ์ทจํ๋ ํ๋ ํจํด์ ๋๋ค. ์ผ๋ช ๊ตฌ๋ ๋งค์ปค๋์ฆ์ ๊ตฌํํ ํจํด์ผ๋ก, ๋ค๋ฅธ ๋์์ธ ํจํด๋ค๊ณผ ๋ค๋ฅด๊ฒ ์ผ๋๋ค ์์กด์ฑ์ ๊ฐ์ง๋๋ค. ์ต์๋ฒ ํจํด์ ์์๋ก๋ MVC ํจํด(Model, View, Controller)์ด ์์ต๋๋ค. MVC์ Model๊ณผ View์ ๊ด๊ณ๋ Observer ํจํด์ Subject ์ญํ ๊ณผ Observer ์ญํ ์ ๊ด๊ณ์ ๋์๋ฉ๋๋ค. ์ฆ, ํ๋์ Model์ ๋ณต์์ View๊ฐ ๋์ํฉ๋๋ค. ๐ก ํด๋์ค ๋ค์ด์ด๊ทธ๋จ์ผ๋ก ๋ณธ ์ต์๋ฒ ํจํด Publisher(Subject) : ๊ด์ฐฐ ๋นํ๋ ๋์์ผ๋ก, Subscriber(Observer)๋ค์ ๋ฆฌ์คํธ๋ก ๊ฐ๊ณ ์๋ค. (Aggrega..
Deep Dive Into Design Patterns - ์ฑ๊ธํค ํจํด
๐ก ์ฑ๊ธํค(Singleton) ํจํด์ด๋? ํด๋์ค์ ์ธ์คํด์ค๊ฐ ํ๋๋ง ์๋๋ก ํ๋ฉด์ ์ด ์ธ์คํด์ค์ ๋ํ ์ ์ญ ์ ๊ทผ(์ก์ธ์ค) ์ง์ ์ ์ ๊ณตํ๋ ์์ฑ ๋์์ธ ํจํด์ ๋๋ค. ์ฝ๊ฒ ๋งํด, ๋จ ํ๋์ ์ ์ผํ ๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ธฐ ์ํ ์ฝ๋ ํจํด์ด๋ฉฐ ์ธ์คํด์ค๊ฐ ํ์ํ ๋ ๋๊ฐ์ ์ธ์คํด์ค๋ฅผ ์๋ก ๋ง๋ค์ง ์๊ณ ๊ธฐ์กด์ ์ธ์คํด์ค๋ฅผ ๊ฐ์ ธ์ ํ์ฉํ๋ ๊ธฐ๋ฒ์ ๋งํฉ๋๋ค. ๋ณดํต ์ฑ๊ธํค ํจํด์ด ์ ์ฉ๋ ๊ฐ์ฒด๊ฐ ํ์ํ ๊ฒฝ์ฐ๋ ๊ทธ ๊ฐ์ฒด๊ฐ ๋ฆฌ์์ค๋ฅผ ๋ง์ด ์ฐจ์งํ๋ ์ญํ ์ ํ๋ ๋ฌด๊ฑฐ์ด ํด๋์ค์ผ๋ ์ ํฉํฉ๋๋ค. ๋ํ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ ๋ชจ๋์ ์๋ก ๋ค ์ ์๋๋ฐ, ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ํ๋ ์์ (I/O ๋ฐ์ด๋)์ ๊ทธ ์์ฒด๋ก ๋ฌด๊ฑฐ์ด ์์ ์ ์ํ๋ฉฐ ๋ํ ํ๋ฒ๋ง ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ๋๋ ค์ฐ๋ฉด ๋์ง ๊ตณ์ด ์ฌ๋ฌ๋ฒ ์์ฑํ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ๐ก ํด๋์ค ๋ค์ด์ด๊ทธ๋จ์ผ๋ก ๋ณธ..
Deep Dive Into Design Patterns - ๋ธ๋ฆฌ์ง ํจํด
๐ก ๋ธ๋ฆฌ์ง ํจํด์ด๋? ํฐ ํด๋์ค ๋๋ ๋ฐ์ ํ๊ฒ ๊ด๋ จ๋ ํด๋์ค๋ค์ ์งํฉ์ ๋ ๊ฐ์ ๊ฐ๋ณ ๊ณ์ธต๊ตฌ์กฐ(์ถ์ํ ๋ฐ ๊ตฌํ)๋ก ๋๋ ํ ๊ฐ๊ฐ ๋ ๋ฆฝ์ ์ผ๋ก ๊ฐ๋ฐํ ์ ์๋๋ก ํ๋ ๊ตฌ์กฐ ๋์์ธ ํจํด์ ๋๋ค. ๐ก ๋ฌธ์ ? Circle(์) ๋ฐ Square(์ง์ฌ๊ฐํ)๋ผ๋ ํ ์์ ์์ ํด๋์ค๋ค์ด ์๋ ๊ธฐํํ์ Shape(๋ชจ์) ํด๋์ค๊ฐ ์๋ค๊ณ ๊ฐ์ ํด ๋ด ์๋ค. ์ด ํด๋์ค ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ํ์ฅํ์ฌ ์์์ ๋์ ํ๊ธฐ ์ํด Red(๋นจ๊ฐ์) ๋ฐ Blue(ํ๋์) ๋ชจ์๋ค์ ์์ ํด๋์ค๋ค์ ๋ง๋ค ๊ณํ์ ๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ฏธ ๋ ๊ฐ์ ์์ ํด๋์ค๊ฐ ์์ผ๋ฏ๋ก BlueCircle(ํ๋์ ์) ๋ฐ RedSquare(๋นจ๊ฐ์ ์ง์ฌ๊ฐํ)์ ๊ฐ์ ๋ค ๊ฐ์ง์ ํด๋์ค ์กฐํฉ์ ๋ง๋ค์ด์ผ ํฉ๋๋ค. ์๋ก์ด ๋ชจ์ ์ ํ๋ค๊ณผ ์์ ์ ํ๋ค์ ์ถ๊ฐํ ๋๋ง๋ค ๊ณ์ธต ๊ตฌ์กฐ๋ ๊ธฐํ๊ธ์์ ..
Deep Dive Into Design Patterns - ์ปดํฌ์งํธ ํจํด
๐ก ์ปดํฌ์งํธ(๋ณตํฉ์ฒด) ํจํด์ด๋? ๊ฐ์ฒด๋ค์ ํธ๋ฆฌ ๊ตฌ์กฐ๋ค๋ก ๊ตฌ์ฑํ ํ, ์ด๋ฌํ ๊ตฌ์กฐ๋ค์ ๊ฐ๋ณ ๊ฐ์ฒด๋ค์ฒ๋ผ ์์ ํ ์ ์๋๋ก ํ๋ ๊ตฌ์กฐ ํจํด์ ๋๋ค. ์ฆ, ๋ณตํฉ ๊ฐ์ฒด(Composite)์ ๋จ์ผ ๊ฐ์ฒด(Leaf)๋ฅผ ๋์ผํ ์ปดํฌ๋ํธ๋ก ์ทจ๊ธํ์ฌ ํด๋ผ์ด์ธํธ๊ฐ ๋ฌด์์ด ๋ณตํฉ ๊ฐ์ฒด์ด๊ณ ๋ฌด์์ด ๋จ์ผ ๊ฐ์ฒด์ธ์ง ๊ตฌ๋ถํ์ง ์๊ณ ๋ ์ฌ์ฉํ ์ ์๊ฒ๋ ํ๋ ํจํด์ ๋๋ค. ๐ก ํด๋์ค ๋ค์ด์ด๊ทธ๋จ์ผ๋ก ๋ณธ ์ปดํฌ์งํธ ํจํด Component(์ธํฐํ์ด์ค) : Leaf์ Compsite ๋ฅผ ๋ฌถ๋ ๊ณตํต์ ์ธ ์์ ์ธํฐํ์ด์ค Composite : ๋ณตํฉ ๊ฐ์ฒด๋ก์, Component ๊ตฌํ์ฒด๋ค์ ๋ด๋ถ ๋ฆฌ์คํธ๋ก ๊ด๋ฆฌ Leaf : ๋จ์ผ ๊ฐ์ฒด๋ก์, ํ์ ์์๊ฐ ์๋ค. Client : Component Interface๋ฅผ ํตํด ๋จ์ผ/๋ณตํฉ ๊ฐ์ฒด๋ฅผ ํ๋์ ๊ฐ์ฒด๋ก ๋ค๋ฃฌ๋ค. ๋ณตํฉ..
Deep Dive Into Design Patterns - ํผ์ฌ๋ ํจํด
๐ก ํผ์ฌ๋ ํจํด์ด๋? ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํ, ํ๋ ์์ํฌ์ ๋ํ, ๋๋ ๋ค๋ฅธ ํด๋์ค๋ค์ ๋ณต์กํ ์งํฉ์ ๋ํ ๋จ์ํ๋ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๋ ๊ตฌ์กฐ์ ๋์์ธ ํจํด์ ๋๋ค. ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ฐ ํด๋์ค์ ๋ฉ์๋๋ค์ด ์ด๋ค ๋ชฉ์ ์ ๋์์ธ์ง ์ดํดํ๊ธฐ ์ด๋ ค์ ๋ฐ๋ก ๊ฐ์ ธ๋ค ์ฐ๊ธฐ์๋ ๋์ด๋๊ฐ ๋์ ๋, ์ด์ ๋ํ ์ ์ ํ ๋ค์ด๋ฐ๊ณผ ์ ๋ฆฌ๋ฅผ ํตํด ์ฌ์ฉ์๋ก ํ์ฌ๊ธ ์ฝ๊ฒ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ค๋ฃฐ ์ ์๋๋ก ์ธํฐํ์ด์ค๋ฅผ ๋ง๋๋ ๋ฐ ์ฌ์ฉํฉ๋๋ค. โญ ํผ์ฌ๋๋ ์์ง์ด๋ ๋ถ๋ถ์ด ๋ง์ด ํฌํจ๋ ๋ณต์กํ ํ์ ์์คํ ์ ๋ํ ๊ฐ๋จํ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๋ ํด๋์ค์ ๋๋ค. ๐ก ํด๋์ค ๋ค์ด์ด๊ทธ๋จ์ผ๋ก ๋ณธ ํผ์ฌ๋ ํจํด ํผ์ฌ๋ ํจํด์ ์ฌ์ฉํ๋ฉด ํ์ ์์คํ ๊ธฐ๋ฅ๋ค์ ํน์ ๋ถ๋ถ์ ํธ๋ฆฌํ๊ฒ ์ ๊ทผํ ์ ์์ต๋๋ค. ๋ํ, ํผ์ฌ๋๋ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์ด๋๋ก ๋ณด๋ด์ผ ํ๋์ง์ ์์ง์ด๋ ๋ชจ๋ ..
Deep Dive Into Design Patterns - ์ด๋ํฐ ํจํด
๐ก ์ด๋ํฐ ํจํด์ด๋? ํธํ๋์ง ์๋ ์ธํฐํ์ด์ค๋ฅผ ๊ฐ์ง ๊ฐ์ฒด๋ค์ด ํ์ ํ ์ ์๋๋ก ํ๋ ๊ตฌ์กฐ์ ๋์์ธ ํจํด์ ๋๋ค. ๐ ๋ฌธ์ ์ํฉ ์ฃผ์ ์์ฅ ๋ชจ๋ํฐ๋ง ์ฑ์ ๋ง๋ค๊ณ ์๊ณ , ์ด ์ฑ์ ์ฌ๋ฌ ์์ค์์ ์ฃผ์ ๋ฐ์ดํฐ๋ฅผ XML ํ์์ผ๋ก ๋ค์ด๋ก๋ํ ํ ์ฌ์ฉ์์๊ฒ ๋ณด๊ธฐ ์ข์ ์ฐจํธ๋ค๊ณผ ๋ค์ด์ด๊ทธ๋จ๋ค์ ํ์ํ๋ค๊ณ ์์ํด ๋ด ์๋ค. ์ด๋ ์์ ์ ๋น์ ์ ํ์ฌ์ ์ค๋งํธ ๋ถ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํตํฉํ์ฌ ๋น์ ์ ์ฑ์ ๊ฐ์ ํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. ๊ทธ๋ฐ๋ฐ ์ด ๋ถ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ JSON ํ์์ ๋ฐ์ดํฐ๋ก๋ง ์๋ํฉ๋๋ค. ์ฆ, ์ฑ๊ณผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ํธํ๋์ง ์๋ ์ํฉ์ ๋๋ค. ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ XML๊ณผ ์๋ํ๋๋ก ๋ณ๊ฒฝํ ์ ์์ผ๋, ๊ทธ๋ฌ๋ฉด ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์์กดํ๋ ์ผ๋ถ ๊ธฐ์กด ์ฝ๋๊ฐ ์์๋ ์ ์์ต๋๋ค. ๋ ์ฒ์๋ถํฐ ํ์ฌ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์ค ์ฝ๋์ ์ ๊ทผํ๋ ๊ฒ์ด ๋ถ๊ฐ๋ฅํ์ฌ..
Deep Dive Into Design Patterns - ๋์์ธ ํจํด์ ๊ฐ์
๐ก ํจํด ์์ธํ ์์๋ณด๊ธฐ๐ ์์ฑ ํจํด Deep Dive Into Design Patterns - ์ฑ๊ธํค ํจํด๐ก ์ฑ๊ธํค(Singleton) ํจํด์ด๋? ํด๋์ค์ ์ธ์คํด์ค๊ฐ ํ๋๋ง ์๋๋ก ํ๋ฉด์ ์ด ์ธ์คํด์ค์ ๋ํ ์ ์ญ ์ ๊ทผ(์ก์ธ์ค) ์ง์ ์ ์ ๊ณตํ๋ ์์ฑ ๋์์ธ ํจํด์ ๋๋ค. ์ฝ๊ฒ ๋งํด, ๋จ ํ๋์ ์ ์ผํ ๊ฐ์ฒด๋ฅผeasyhomputer.tistory.com ๐ ๊ตฌ์กฐ ํจํด Deep Dive Into Design Patterns - ์ด๋ํฐ ํจํด๐ก ์ด๋ํฐ ํจํด์ด๋? ํธํ๋์ง ์๋ ์ธํฐํ์ด์ค๋ฅผ ๊ฐ์ง ๊ฐ์ฒด๋ค์ด ํ์ ํ ์ ์๋๋ก ํ๋ ๊ตฌ์กฐ์ ๋์์ธ ํจํด์ ๋๋ค. ๐ ๋ฌธ์ ์ํฉ ์ฃผ์ ์์ฅ ๋ชจ๋ํฐ๋ง ์ฑ์ ๋ง๋ค๊ณ ์๊ณ , ์ด ์ฑ์ ์ฌ๋ฌ ์์ค์easyhomputer.tistory.com Deep Dive Into Desig..