# [Design Pattern] ๊ฐ์
์ผ์ข
์ ์ค๊ณ ๊ธฐ๋ฒ์ด๋ฉฐ, ์ค๊ณ ๋ฐฉ๋ฒ์ด๋ค.
# ๋ชฉ์
SW ์ฌ์ฌ์ฉ์ฑ, ํธํ์ฑ, ์ ์ง ๋ณด์์ฑ์ ๋ณด์ฅ.
# ํน์ง
๋์์ธ ํจํด์ ์์ด๋์ด์, ํน์ ํ ๊ตฌํ์ด ์๋.
ํ๋ก์ ํธ์ ํญ์ ์ ์ฉํด์ผ ํ๋ ๊ฒ์ ์๋์ง๋ง, ์ถํ ์ฌ์ฌ์ฉ, ํธํ, ์ ์ง ๋ณด์์ ๋ฐ์ํ๋ ๋ฌธ์ ํด๊ฒฐ์ ์๋ฐฉํ๊ธฐ ์ํด ํจํด์ ๋ง๋ค์ด ๋ ๊ฒ์.
# ์์น - SOLID (๊ฐ์ฒด์งํฅ ์ค๊ณ ์์น)
(๊ฐ๋ตํ ์ค๋ช )
# Single Responsibility Principle
ํ๋์ ํด๋์ค๋ ํ๋์ ์ญํ ๋ง ํด์ผ ํจ.
# Open - Close Principle
ํ์ฅ (์์)์๋ ์ด๋ ค์๊ณ , ์์ ์๋ ๋ซํ ์์ด์ผ ํจ.
# Liskov Substitution Principle
์์์ด ๋ถ๋ชจ์ ์๋ฆฌ์ ํญ์ ๊ต์ฒด๋ ์ ์์ด์ผ ํจ.
# Interface Segregation Principle
์ธํฐํ์ด์ค๊ฐ ์ ๋ถ๋ฆฌ๋์ด์, ํด๋์ค๊ฐ ๊ผญ ํ์ํ ์ธํฐํ์ด์ค๋ง ๊ตฌํํ๋๋ก ํด์ผํจ.
# Dependency Inversion Property
์์ ๋ชจ๋์ด ํ์ ๋ชจ๋์ ์์กดํ๋ฉด ์๋จ.
๋ ๋ค ์ถ์ํ์ ์์กดํ๋ฉฐ, ์ถ์ํ๋ ์ธ๋ถ ์ฌํญ์ ์์กดํ๋ฉด ์๋จ.
# ๋ถ๋ฅ (์ค์)
3๊ฐ์ง ํจํด์ ๋ชฉ์ ์ ์ดํดํ๊ธฐ!
# ์์ฑ ํจํด (Creational) : ๊ฐ์ฒด์ ์์ฑ ๋ฐฉ์ ๊ฒฐ์
Class-creational patterns, Object-creational patterns.
์) DBConnection์ ๊ด๋ฆฌํ๋ Instance๋ฅผ ํ๋๋ง ๋ง๋ค ์ ์๋๋ก ์ ํํ์ฌ, ๋ถํ์ํ ์ฐ๊ฒฐ์ ๋ง์.
# ๊ตฌ์กฐ ํจํด (Structural) : ๊ฐ์ฒด๊ฐ์ ๊ด๊ณ๋ฅผ ์กฐ์ง
์) 2๊ฐ์ ์ธํฐํ์ด์ค๊ฐ ์๋ก ํธํ์ด ๋์ง ์์ ๋, ๋์ ์ฐ๊ฒฐํด์ฃผ๊ธฐ ์ํด์ ์๋ก์ด ํด๋์ค๋ฅผ ๋ง๋ค์ด์ ์ฐ๊ฒฐ์ํฌ ์ ์๋๋ก ํจ.
# ํ์ ํจํด (Behavioral): ๊ฐ์ฒด์ ํ์๋ฅผ ์กฐ์ง, ๊ด๋ฆฌ, ์ฐํฉ
์) ํ์ ํด๋์ค์์ ๊ตฌํํด์ผ ํ๋ ํจ์ ๋ฐ ์๊ณ ๋ฆฌ์ฆ๋ค์ ๋ฏธ๋ฆฌ ์ ์ธํ์ฌ, ์์์ ์ด๋ฅผ ํ์๋ก ๊ตฌํํ๋๋ก ํจ.