Design Pattern
GoF์ ๋์์ธ ํจํด
Gang of Four
Erich Gamma
,Richard Helm
,Ralph Johnson
,John Vlissides
๋ผ๋ ๋ค๋ช ์ ์ ์๋ฅผ ๋ปํจ
์ํํธ์จ์ด ๋์์ธ์์ ์์ฃผ ๋ฐ์ํ๋ ๋ฌธ์ ๋ค์ ๋ํ ํด๊ฒฐ์ฑ ์ ์ ๊ณตํ๋ 23๊ฐ์ง ๋์์ธ ํจํด์ ์กฐํฉ
๊ฐ์ฒด์งํฅ ์์น
๋ฐ๋๋ ๋ถ๋ถ์ ์บก์ํํ๋ค
์์๋ณด๋ค๋ ๊ตฌ์ฑ์ ํ์ฉํ๋ค
๊ตฌํ๋ณด๋ค๋ ์ธํฐํ์ด์ค์ ๋ง์ถฐ์ ํ๋ก๊ทธ๋๋ฐํ๋ค
์ํธ์์ฉํ๋ ๊ฐ์ฒด ์ฌ์ด์์๋ ๊ฐ๋ฅํ๋ฉด ๋์จํ ๊ฒฐํฉ์ ์ฌ์ฉํด์ผ ํ๋ค
ํด๋์ค๋ ํ์ฅ์๋ ์ด๋ ค ์์ด์ผ ํ์ง๋ง ๋ณ๊ฒฝ์๋ ๋ซํ์์ด์ผ ํ๋ค(OCP)
์ถ์ํ๋ ๊ฒ์ ์์กดํ๊ฒ ๋ง๋ค๊ณ ๊ตฌ์ ํด๋์ค์ ์์กดํ์ง ์๊ฒ ๋ง๋ ๋ค.
์์ฑ ํจํด(Creational Patterns)
๊ฐ์ฒด์ ์์ฑ๊ณผ ์ด๊ธฐํ์ ๊ด๋ จ๋ ํจํด
๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๋ฐฉ์์ ์ถ์ํ
์ฃผ์ ํจํด:
Singleton
,Factory Method
,Abstract Factory
,Builder
,Prototype
๊ตฌ์กฐ ํจํด(Structural Patterns)
ํด๋์ค๋ ๊ฐ์ฒด๋ฅผ ํฉ์ฑํ์ฌ ๋ ํฐ ๊ตฌ์กฐ๋ก ๋ง๋๋ ํจํด
ํด๋์ค์ ๊ฐ์ฒด๋ฅผ ์กฐํฉํ์ฌ ๋ํฐ ๊ตฌ์กฐ๋ก ๋ง๋ฆ
์ฃผ์ ํจํด:
Adapter
,Bridge
,Composite
,Decorator
,Facade
,Flyweight
,Proxy
ํ๋ ํจํด(Behavioral Paterrns)
๊ฐ์ฒด ๊ฐ์ ํต์ ๊ณผ ์ฑ ์์ ๋ถ์ฐํ๋ ํจํด
์๊ณ ๋ฆฌ์ฆ๊ณผ ๊ฐ์ฒด ๊ฐ์ ์ฑ ์์ ๋ถ๋ฆฌ
์ฃผ์ ํจํด:
Chain of Responsibility
,Command
,Interpreter
,Iterator
,Mediator
,Memento
,Observer
,State
,Strategy
,Template Method
,Visitor
์์ฑ ํจํด
ํฉํ ๋ฆฌ ํจํด
๊ฐ์ฒด ์์ฑ์ ์บก์ํํ๋ ๋์์ธ ํจํด
๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ์ฝ๋๋ฅผ ํด๋ผ์ด์ธํธ ์ฝ๋๋ก๋ถํฐ ๋ถ๋ฆฌํ์ฌ ์ ์ฐ์ฑ์ ์ ๊ณต
๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๊ณผ์ ์ ์๋ธํด๋์ค์์ ์ฒ๋ฆฌํ๋๋ก ํ๋ ๊ฒ์ด ํน์ง
๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๋ณ๋ ๋๊ตฌ๋ฅผ ์ ๊ณต
์ฑ๊ธํค ํจํด
ํ๋์ ์ธ์คํด์ค๋ง์ ๊ฐ๋๋ก ๋ณด์ฅ
ํฉํ ๋ฆฌ ๋ฉ์๋ ํจํด
๊ฐ์ฒด ์์ฑ์ ์บก์ํ
๊ฐ์ฒด ์์ฑ์ ์๋ธ ํด๋์ค์์ ๊ฒฐ์ ํ๋๋ก ํ๋ ๊ฒ
๋น๋ ํจํด(Builder Pattern)
๋ณต์กํ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋๋ฐ ์ฌ์ฉ๋๋ ํจํด
๊ฐ์ฒด ์์ฑ์ ๋จ๊ณ๋ฅผ ๋ถ๋ฆฌํ์ฌ ๋ณต์ก์ฑ์ ํด๊ฒฐ
๊ฐ์ฒด์ ์์ฑ ๊ณผ์ ์ ๋ค์ํ ๋ฐฉ์์ผ๋ก ์กฐํฉ
๊ตฌ์กฐ ํจํด
Facade ํจํด
์ฌ๋ฌ ๊ฐ์ ์๋ธ์์คํ ์ด๋ ๋ณต์กํ ์ธํฐํ์ด์ค๋ฅผ ๋จ์ํ
ํด๋ผ์ด์ธํธ์๊ฒ ๋ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์๋ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๋ ํจํด
๋ณต์กํ ์์คํ ์ ๋จ์ํ ์ธํฐํ์ด์ค๋ก ๋ํ
์ฌ๋ฌ ์๋ธ์์คํ ์ ์กฐํฉํด์ ๋ญ๊ฐ ๋์์ ๋ง๋ค๊ธฐ์ ๋ณต์กํด์ง๋ค. ์ด๋ด ๋ Facade ํจํด์ ์ฌ์ฉ
๋ณต์กํ ์ฌ๋ฌ ์๋ธ์์คํ ์ ์ด์ฉํด์ ์คํผ๋ ์ด์ ์ ๋ง๋ค ๋ ํ์ฌ๋ ํจํด์ ์ด๋ค.
Proxy ํจํด
๊ฐ์ฒด์ ์ ๊ทผ์ด๋ ์กฐ์์ ์ค๊ฐ์์ ์ ์ดํ๊ฑฐ๋ ๋ณด์กฐํ ๋ ์ฌ์ฉ
๊ฐ์ฒด์ ๋๋ฆฌ์๋ ๋๋ณ์ ์ญํ ์ ํ๋ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉ
์ค์ ๊ฐ์ฒด์ ๋ํ ์ ๊ทผ์ ์ค๊ฐ์์ ์ ์ดํ๊ฑฐ๋ ์ค๊ฐ์์ ๋ถ๊ฐ์ ์ธ ์์ ์ ์ํํ๋ ํจํด
์ค๊ฐ์ ๋๋ฆฌ์๊ฐ ๋ ํํ
์ค๊ฐ์์ ํ๋ ์ผ์ ์์ง๋ง ์ด๋ค ๋์์ ๋ํด์ ์์ ๋ฐ์ ๊ฐ์ฒด์ ์ ๋ฌ
๋ก๊น ๋ฐ ์๋ ์ธก์ , ์ ๊ทผ ์ ์ด ๋ฑ ๋ถ๊ฐ์ ์ธ ๋ณ๋ ๋์์ ํ ๋ ์ฌ์ฉ
ํ๋ ํจํด
์ ๋ต ํจํด(Strategy Pattern)
์๊ณ ๋ฆฌ์ฆ์ด๋ ํ์๋ฅผ ์ ์ํ๊ณ , ๊ฐ๊ฐ์ ์บก์ํ
์๊ณ ๋ฆฌ์ฆ์ ๋ณ๊ฒฝ์ ๋ฐ๋ฅธ ์ํฅ์ ์ต์ํ
๋์ ์ผ๋ก ์๊ณ ๋ฆฌ์ฆ์ ์ ํ
์๊ณ ๋ฆฌ์ฆ์ด๋ ํ์(์ ๋ต)์ ์ฃผ์ ํ์ฌ ๊ต์ฒดํ๊ธฐ ์ฝ๊ฒ ๋ง๋๋ ๊ฒ
์ต์ ๋ฒ ํจํด
์ด๋ค ๊ฐ์ฒด์ ์ํ๊ฐ ๋ณ๊ฒฝ๋ ๋ ์ข ์ ๊ฐ์ฒด๋ค์ด ์๋์ผ๋ก ์๋ฆผ์ ๋ฐ๋๋ค.
๊ฐ์ฒด๋ค์๊ฒ ์๋ฆฌ๊ธฐ
Last updated