๊ฐ๊ด
Design Pattern ์ด๋? : ๋ฌธ๋งฅ(Context - ํน์ ์ํฉ)ย ๋ด์์, ๋ฌธ์ (Problem) ๋ฅผ ํด๊ฒฐํ ์ ์๋๋ก ์ ์๋ ๋์์ธ์ ์ธ ํด๊ฒฐ์ฑ (Solution) ์.
์๊ณ ๋ฆฌ์ฆ์ด ํจ์ ๋ฑ์ ๋ถ๋ถ์ ์ธ ์ฑ๋ฅ ํฅ์์ ์ง์คํ๊ณ ์๋ค๋ฉด, Design Pattern ์ ํน์ ๊ธฐ๋ฅ์ ๊ฐ๋ฐํ๊ธฐ ์ํ ์ฝ๋ ๊ตฌ์กฐ ๋ฐ ์ค๊ณ์ ์ง์คํ๊ณ ์์. ๊ฐ์ธ์ ์ผ๋ก Modulization ๋ฑ์ ์ ํ๋ฉด, ๋์์ธ ํจํด๊ณผ ์๊ณ ๋ฆฌ์ฆ์ด ๊ฐ๊ด์ ์ธ ์ฝ๋ ๊ตฌ์ฑ์ ์์ด ๊ฐ์ฅ ์ค์ ์ ์ด๋ผ ์๊ฐํจ.
Design Pattern ์ ์ ์์ ๋ํด ์ข ๋ ์์ธํ ํ์ด ๋ด.
Context : Situation (๋ฌธ์ ๋ฅผ ๋น๋ฉดํ ์ํฉ, ์ข ๋ ๊ตฌ์ฒด์ ์ธ ์๋ก, ์ฃผ๋ณ ์ฝ๋๋ค๊ณผ ๊ธฐํ)
Problem : ํด๊ฒฐํด์ผํ๋ ๋ฌธ์ , ์ฑ์ทจํ ์์.
Solution : General "Design" => Design Pattern : ํด๋น ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ ๋ฐฉ๋ฒ.
์ด๋ป๊ฒ ์จ๋จน์์ง๊ฐ ์ค์ํ๋ฐ. ๊ฐ Pattern ์ ํ์ตํ ๋ย Context, Problem, ์ ์ํ๊ณ ์๋ Solution ์ ํ์ ํ๋ค ํ๋ฉด, ๋ค์๊ณผ ๊ฐ์ ์ ์ฐจ๋ฅผ ๋ฐ๋ฅด๋ฉด ์ฉ์ดํจ.
1. ํ์ฌ ๋ฌธ์ ์ํฉ ๋ฐ ๋ฌธ์ ๋ฅผ ์ด๋ฃจ๊ณ ์๋ ๋ฌธ๋งฅ์ ์ธ์ง.
2. Actual Pattern : ํด๋น ๋ฌธ์ ์ํฉ์ ํด๊ฒฐํ๊ธฐ ์ํด, ์ด๋ค ํจํด์ ์ฌ์ฉํ ์ง ๊ฒฐ์ ๋ฐ ๊ตฌํ.
๋ํ, Pattern ์์ฒด๋ ์ถ์์ ์ธ ๊ตฌ์กฐ, ๊ฐ๋ , ๊ฒฝํ์ด๊ธฐ ๋๋ฌธ์,ย ์ด๋ฅผ ์ง์ ์ ์ผ๋ก ๊ตฌํํ๋ ๊ฒ์ ๊ฐ๋ฐ ํ๊ฒฝ์ ๋ฐ๋ผ ๊ต์ฅํ ๋ฌ๋ผ์ง ์ ์์.ย
Observer Pattern ์ ์์๋ก ๋ค์ด๋ณด๋ฉด,ย C ๋ Java ์์๋ ์ง์ Observer ์ Subject Interface ๋ฅผ ๊ตฌํํ ํ, ์ด๋ฅผ ์์ ๋ฐ๋ Concrete Class ๋ฅผ ๋ง๋ค์ด ๊ตฌํํด์ผ ํ๋๋ฐ ๋ฐํด. Unity ์์๋ UnityEvent ํน์ Delegate ๋ก์ ์ด๋ฏธ Observer Pattern ์ด ๊ตฌํ๋์ด ์๊ธฐ ๋๋ฌธ์. (์ฆ, Unity ์์๋ ๊ทธ๋ฅ UnityEvent ์ฐ๋ฉด ์ถฉ๋ถํจ.)
์์ธํ Pattern
์์ธํ Pattern ์ ๋ค ๋ค๋ฃจ๊ธฐ ์ด๋ ต๊ธฐ ๋๋ฌธ์ ๋งํฌ๋ก ๋์ฒดํจ.
- ์ฌ๋ฌ Design Pattern ์ ์ ๋ฐ ๊ฐ๋ ย :ย Adapter Pattern - Pavdup's Second Brain - Obsidian Publishย : Pattern ์ ๊ฐ๋ ์์ฒด์ ๋ํด ์๊ณ ์ถ์ผ๋ฉด ํด๋น ๋งํฌ ๋ด ์ผ์ชฝ ๋ถ๋ถ ๋ณด๋ฉด ์ฌ๋ฌ Pattern ์ด ๋์ ์์ด ์ดํด๋ณด๋ฉด ์ฉ์ดํ ๊ฒ.
- Unity ํนํ Design Pattenr :ย ๊ฒ์ ๋์์ธ ํจํด with Unity 2021 ์ฑ ์ถ์ฒ. ๊ทธ๋ฐ๋ฐ ๋ฒ์ญ ํ๋ฆฌํฐ๊ฐ ๊ทธ๋ ๊ฒ ์ข์ง ์์์, ์คํ๋ ค ์๋ ๋งํฌ๋ง ์ดํด๋ ๋์ ๋ ์ ์์.
-ย NULL : ๋ค์ด๋ฒ ๋ธ๋ก๊ทธ (naver.com)ย : ํด๋น ์ฑ ๋ด์ฉ์ ๋ํด ํ๊ตญ์ด๋ก ์ ์ ๋ฆฌํด๋ . / ํ๊ตญ์ด ๋ฒ์ญ๋ณธ ์ฑ ์ด ์์ด์ ์ด ๋ด์ฉ์ ์์ฝํด๋ ๊ฒ์ผ๋ก ๋ณด์.
-ย PacktPublishing/Game-Development-Patterns-with-Unity-2021-Second-Edition: Game Development Patterns with Unity 2021 - Second Edition, published by Packt (github.com)ย : ์ฑ ์์ ๋ด์ฉ ๋ด๊ธด Github Library
-ย Game Development Patterns with Unity 2021 | 4. Implementing a Game Manager with the Singleton (youtube.com)ย : ์ฑ ์ ๋ด์ฉ ๋ค๋ฃจ๋ ์์
๊ฐ์ธ์ ์ผ๋ก Observer, Strategy, Flyweight, Object Pool, Template Method, Command, Singleton, State Pattern ์ ์์ฃผ ๋ณธ ๊ฒ ๊ฐ์์, ํด๋น ๋ถ๋ถ์ ์ค์ ์ ์ผ๋ก ์ฐธ๊ณ ํด๋ ์ข์ง ์์๊น ์ถ์.
๊ฐ์ ํ ๋ถ๋ถ ์์ผ๋ฉด ํธํ ์๊ธฐํด์ฃผ์ธ์ฉ!
์ฑ๊ธ๋ฒ๊ธํค
๋๋ ๋์์ธ ํจํด์ ์ข์ํ์ง ์๋๋ฐ ๋น์งํฐํจํด์ ์ง์ง ์ ์ฉํจ. ํธ๋ฆฌ๊ตฌ์กฐ ๋ฐ์ดํฐ๋ฅผ ์ฐ๊ณ ์์ผ๋ฉด ๊ผญ ์์์ผํด.
์ค ๊ฐ์ฌํฉ๋๋ค! ํจ ๋ ์ฐพ์๋ด์ผ๊ฒ ๋ค
์ด๊ฒ๋ง ๋ง์คํฐํ๋ค๋ฉด..
์ฐธ๊ณ ๋์์ธํจํด์ ํ์คํ๋ ํ๋ก๊ทธ๋๋จธ๋ค์ด ์๋นํ ๋ง๋ค. ์ทจ์ค์๋ค์ด๋ ํ์๋ค(=์ ใ ์ ๋ค)์ด ๋์์ธํจํด์ ๊ณต๋ถํ๊ณ ๊ตฌ์กฐ๋ฅผ ๋์์ธ ํจํด์ ์ฐ๊ฒจ๋ฃ์๋ ค๊ณ ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๊ธฐ ๋๋ฌธ์ด๋ค. ์ฌ๋๋ค์ด ๋ง์ด์ง๋ ๊ตฌ์กฐ๋ฅผ ๋ชจ์์ ๋์์ธํจํด์ด๋ผ๋ ์ด๋ฆ์ผ๋ก ๋ฌถ์ด๋์๊ฑด๋ฐ ๊ทธ ๋ฐ๋ ์ํฉ์ด ๋๋ฒ๋ฆฐ ๊ฒ. ๊ณ ๋ก ๋์์ธํจํด์ ์ง์์ผ๋ก๋ง ์๊ณ ๋๋ฌด ์ฝ๋งค์ด์ง ์๋๊ฒ ์ข๋ค.
๋ง์ ๊ฐ์ฌํฉ๋๋ค!