๐ ํ๋ก๊ทธ๋๋ฐ ๋์์ธ ํจํด
๐ซ Q
- ์๊ณ ์๊ฑฐ๋ ์จ ๋ณธ ๋์์ธ ํจํด์ด ์๋ค๋ฉด ์ค๋ช ํด ์ฃผ์ธ์.
๋์์ธ ํจํด
์ด ๋ญ๊ฐ์?์ฑ๊ธํค
์ด ๋ญ๊ฐ์?์ต์ ๋ฒ ํจํด
์ด ๋ญ๊ฐ์?
๐ซ ํ๋ก๊ทธ๋๋ฐ ๋์์ธ ํจํด
- S/W ๊ฐ๋ฐ์์ ๊ณตํต์ ์ผ๋ก ๋ฐ์ํ๋ ๋ฌธ์ ์ ๋ํ ์๋ฃจ์ /ํด๊ฒฐ์ฑ
- ์ฌ์ฌ์ฉํ ์ ์๋ ๋ฐฉ์
- ๊ทธ๋๋ก ์ฐ๊ธฐ๋ณด๋ค๋ ์ํฉ์ ๋ง๊ฒ (์์๋ฑํ๊ฒ)
- ๋ํ์ ์ผ๋ก ๊ตฌ์ฒดํ๋ ๋์์ธ ํจํด์ GoF(Gang of Four)์์ ์ ์ํ ์ด 23๊ฐ์ ํจํด์ด ์์
๐ซง ๋ชฉ์ ์ ๋ฐ๋ฅธ ๋ถ๋ฅ
- ์์ฑ
- ๊ฐ์ฒด ์์ฑ์ ๊ด๋ จ๋ ํจํด
- ํน์ ๊ฐ์ฒด๊ฐ ์์ฑ๋๊ฑฐ๋ ๋ณ๊ฒฝ๋์ด๋ ํ๋ก๊ทธ๋จ ๊ตฌ์กฐ์ ์ํฅ์ ์ต์ํํ ์ ์๋๋ก ์ ์ฐ์ฑ ์ ๊ณต
ํฉํ ๋ฆฌ (Factory)
:โญ์ถ์ ํฉํ ๋ฆฌ (Abstract Factory)
: ๊ตฌ์ฒด์ ์ธ ํด๋์ค๋ฅผ ์ง์ ํ์ง ์๊ณ ์ธํฐํ์ด์ค๋ฅผ ํตํด ์ฐ๊ด๋๋ ๊ฐ์ฒด๋ค์ ๋ฌถ์ด์คโญํฉํ ๋ฆฌ ๋ฉ์๋ (Factory Method)
: ๊ฐ์ฒด ์์ฑ์ ์๋ธ ํด๋์ค๋ก ๋ถ๋ฆฌํ์ฌ ์์ (์บก์ํ)
๋น๋ (Builder)
: ๊ฐ์ฒด์ ์์ฑ๊ณผ ํํ์ ๋ถ๋ฆฌํ์ฌ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋กํ ํ์ (Prototype)
: ์๋ณธ ๊ฐ์ฒด๋ฅผ ๋ณต์ฌํ์ฌ ๊ฐ์ฒด๋ฅผ ์์ฑ (ํด๋ก )โญ ์ฑ๊ธํด (Singleton)
: ํ ํด๋์ค๋ง๋ค ์ธ์คํด์ค๋ฅผ ํ๋๋ง ์์ฑํ์ฌ ์ด๋์๋ ์ฐธ์กฐ
- ๊ตฌ์กฐ
- ํ๋ก๊ทธ๋จ ๋ด ์๋ฃ๊ตฌ์กฐ๋ ์ธํฐํ์ด์ค ๊ตฌ์กฐ ๋ฑ ํ๋ก๊ทธ๋จ ๊ตฌ์กฐ๋ฅผ ์ค๊ณํ๋๋ฐ ์ฌ์ฉ๋๋ ํจํด
- ํด๋์ค๋ ๊ฐ์ฒด๋ฅผ ์กฐํฉํ์ฌ ๋ ํฐ ๊ตฌ์กฐ๋ฅผ ๋ง๋ค ์ ์๊ฒ ํด์ค
์ด๋ํฐ (Adapter)
: ํด๋์ค์ ์ธํฐํ์ด์ค๋ฅผ ์ด๋ค ํด๋์ค์์๋ ์ด์ฉํ ์ ์๋๋ก ๋ณํ๋ธ๋ฆฟ์ง (Bridge)
: ๊ตฌํ๋ถ์์ ์ถ์์ธต์ ๋ถ๋ฆฌํ์ฌ ๊ฐ์ ๋ ๋ฆฝ์ ์ผ๋ก ๋ณํํ๊ณ ํ์ฅํ ์ ์๋๋ก ํจ์ปดํฌ์งํธ (Composite)
: ๊ฐ์ฒด๋ค์ ๊ด๊ณ๋ฅผ ํธ๋ฆฌ ๊ตฌ์กฐ๋ก ๊ตฌ์ฑํ์ฌ ํํํ๋ ๋ฐฉ์์ผ๋ก ๋ณตํฉ ๊ฐ์ฒด์ ๋จ์ผ ๊ฐ์ฒด๋ฅผ ๊ตฌ๋ถ์์ด ๋ค๋ฃธ๋ฐ์ฝ๋ ์ดํฐ (Decorator)
: ์ฃผ์ด์ง ์ํฉ์ ๋ฐ๋ผ ๊ฐ์ฒด์ ๋ค๋ฅธ ๊ฐ์ฒด๋ฅผ ๋ง๋ถ์ํ์ฌ๋ (Facade)
: ์๋ธ์์คํ ์ ์๋ ์ธํฐํ์ด์ค ์งํฉ์ ๋ํด ํตํฉ๋ ์ธํฐํ์ด์ค ์ ๊ณตํ๋ผ์ด์จ์ดํธ (Flyweight)
: ํฌ๊ธฐ๊ฐ ์์ ์ฌ๋ฌ ๊ฐ์ ๊ฐ์ฒด๋ฅผ ๋งค๋ฒ ์์ฑํ์ง ์๊ณ ์ต๋ํ ๊ณต์ ํ์ฌ ์ฌ์ฉํ๋๋ก ๋ฉ๋ชจ๋ฆฌ ์ ์ฝํ๋ก์ (Proxy)
: ์ค์ ๊ธฐ๋ฅ์ ์ํํ๋ ๊ฐ์ฒด ๋์ ๊ฐ์์ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํด ๋ก์ง์ ํ๋ฆ์ ์ ์ด
- ํ๋/ํ์
- ๋ฐ๋ณต์ ์ผ๋ก ์ฌ์ฉ๋๋ ๊ฐ์ฒด๋ค์ ์ปค๋ฎค๋์ผ์ด์ ์ ํจํดํ
- ๊ฐ์ฒด ์ฌ์ด์ ์๊ณ ๋ฆฌ๋ฌ ๋๋ ์ฑ ์์ ๋ถ๋ฐฐํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์ ์๋จ
- ๊ฒฐํฉ๋๋ฅผ ์ต์ํ ํ๋ ๊ฒ์ด ์ฃผ ๋ชฉ์ (Loose Coupling)
์ฑ ์ ์ฐ์ (Chain of Responsibility)
: ์์ฒญ์ ๋ฐ๋ ๊ฐ์ฒด๋ฅผ ์ฐ์์ ์ผ๋ก ๋ฌถ์ด ์์ฒญ์ ์ฒ๋ฆฌํ๋ ๊ฐ์ฒด๋ฅผ ๋ง๋ ๋๊น์ง ๊ฐ์ฒด Chain์ ๋ฐ๋ผ ์์ฒญ์ ์ ๋ฌ์ปค๋งจ๋ (Command)
: ์์ฒญ์ ๊ฐ์ฒด๋ก ์บก์ํํ์ฌ ์ฌ์ฌ์ฉํ๊ฑฐ๋ ์ทจ์์ธํฐํ๋ฆฌํฐ (Interpreter)
: ํน์ ์ธ์ด์ ๋ฌธ๋ฒ ํํ์ ์ ์๋ฐ๋ณต์ (Iterator)
: ์ปฌ๋ ์ ๊ตฌํ ๋ฐฉ๋ฒ์ ๋ ธ์ถํ์ง ์์ผ๋ฉด์ ๋ชจ๋ ํญ๋ชฉ์ ์ ๊ทผํ ์ ์๋ ๋ฐฉ๋ฒ์ ์ ๊ณต์ค์ฌ์ (Mediator)
: ํ ์งํฉ์ ์ํด์๋ ๊ฐ์ฒด๋ค์ ์ํธ์์ฉ์ ์บก์ํํ์ฌ ์๋ก์ด ๊ฐ์ฒด๋ก ์ ์๋ฉ๋ฉํ (Memento)
: ๊ฐ์ฒด๊ฐ ํน์ ์ํ๋ก ๋ค์ ๋๋์ ์ฌ ์ ์๋๋ก ๋ด๋ถ ์ํ๋ฅผ ์ค์ฒดํโญ ์ต์ ๋ฒ (Observer)
: ๊ฐ์ฒด ์ํ๊ฐ ๋ณํ ๋ ๊ด๋ จ ๊ฐ์ฒด๋ค์ด ๊ทธ ๋ณํ๋ฅผ ์ ๋ฌ๋ฐ์ ์๋์ผ๋ก ๊ฐฑ์์ํ (State)
: ๊ฐ์ฒด์ ์ํ์ ๋ฐ๋ผ ๋์ผํ ๋์์ ๋ค๋ฅด๊ฒ ์ฒ๋ฆฌ์ ๋ต (Strategy)
: ๋์ผ ๊ณ์ด์ ์๊ณ ๋ฆฌ๋ฌ๊ตฐ์ ์ ์ํ๊ณ ์บก์ํํ์ฌ ์ํธ ๊ตํ์ด ๊ฐ๋ฅํ๊ฒ ํจํ ํ๋ฆฟ ๋ฉ์๋ (Template Method)
: ์์ ํด๋์ค๋ ์๊ณ ๋ฆฌ๋ฌ์ ๊ณจ๊ฒฉ๋ง์ ์์ฑํ๊ณ ๊ตฌ์ฒด์ ์ธ ์ฒ๋ฆฌ๋ ์๋ธ ํด๋์ค๋ก ์์๋ฐฉ๋ฌธ์ (Visitor)
: ๊ฐ์ฒด์ ์์์ ๋ํด ์ํํ ์ฐ์ฐ์ ๋ถ๋ฆฌํ์ฌ ๋ณ๋์ ํด๋์ค๋ก ๊ตฌ์ฑ
๐ซ ๋์์ธ ํจํด์ ๊ตฌ์ฑ์์
- ์ด๋ฆ : ์๋ฏธ ์๋ ํจํด ์๋ณ์
- ๋ฌธ์ ๊ธฐ์
- ํด๊ฒฐ์ฑ ๊ธฐ์ : ์์ ํ ์ค๊ณ๊ฐ ์๋๋ผ ๋ค์ํ ๋ฐฉ์์ผ๋ก ์คํ๋ ์ ์๋ ์ค๊ณ ํด๊ฒฐ์ฑ ์ ์ํ ํ ํ๋ฆฟ
- ๊ฒฐ๋ก : ํจํด์ ์ ์ฉํ ๊ฒฐ๊ณผ์ ํธ๋ ์ด๋ ์คํ
๐ซ Ref
์ด ๊ธฐ์ฌ๋ ์ ์๊ถ์์ CC BY 4.0 ๋ผ์ด์ผ์ค๋ฅผ ๋ฐ๋ฆ
๋๋ค.