
๐ฑ 1. Spring
- ์คํ๋ง ํ๋ ์์ํฌ๋ ์๋ฐ ํ๋ซํผ์ ์ํ ์คํ ์์ค ์ ํ๋ฆฌ์ผ์ด์
ํ๋ ์์ํฌ์ด๋ค.
- ํ
์คํธ์ ์ฉ์ด์ฑ, ๋์จํ ๊ฒฐํฉ์ ์ค์ ์ ๋๋ฉด์ ๊ฐ๋ฐ๋๋ค.
- ์คํ๋ง ๋ถํธ, ์คํ๋ง ํด๋ผ์ฐ๋, ์คํ๋ง ๋ฐฐ์น, ์คํ๋ง ์ํ๋ฆฌํฐ ๋ฑ ์ฌ๋ฌ๊ฐ์ง ๋ชจ๋์ ๊ฐ์ง๊ณ ์๋ค.
- ์คํ๋ง์ IoC / DI , AOP ๊ด์ ์ค์ฌ ํ๋ก๊ทธ, PSA ํน์ง์ด ์๋ค.
1-1. ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ(Object Oriented Programming)
- ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋์ ์ปดํจํฐ ํ๋ก๊ทธ๋๋ฐ์ ํจ๋ฌ๋ค์ ์ค ํ๋์ด๋ค.
- ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์ฌ๋ฌ ๊ฐ์ ๋
๋ฆฝ๋ ๋จ์์ธ ๊ฐ์ฒด๋ค์ ๋ชจ์์ผ๋ก ํ์
ํ๊ณ ์ ํ๋ ๊ฒ์ด๋ค.
- ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ํ๋ก๊ทธ๋จ์ ์ ์ฐํ๊ณ ๋ณ๊ฒฝ ์ฉ์ดํ๊ฒ ๋ง๋ค๊ธฐ ๋๋ฌธ์ ๋๊ท๋ชจ ์ํํธ์จ์ด ๊ฐ๋ฐ์ ์ฌ์ฉ๋๋ค.
1-1-1. ๐ฅ ๊ฐ์ฒด์งํฅ ํต์ฌ ๐ฅ
- ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์บก์ํ, ์ถ์ํ, ์์, ๋คํ์ฑ๋ฑ ํน์ง์ด ์๋ค.
ํ๋ก๊ทธ๋จ์ ์ ์ฐํ๊ณ ๋ณ๊ฒฝ์ด ์ฉ์ดํ๊ฒ ๋ง๋ค๊ธฐ ์ํด์๋ ๋คํ์ฑ ์ด ์ค์ํ๋ค!
1-1-2. ๐ฅ ๋คํ์ฑ ๐ฅ
- ๋คํ์ฑ์ ํ๋์ ๊ฐ์ฒด๊ฐ ์ฌ๋ฌ ๊ฐ์ง ํ์
์ ๊ฐ์ง ์ ์๋ ๊ฒ์ ์๋ฏธํ๋ค.
- ์๋ฐ์์๋ ๋คํ์ฑ์ ๋ถ๋ชจ ํด๋์ค ํ์
์ ์ฐธ์กฐ ๋ณ์๋ก ์์ ํด๋์ค ํ์
์ ์ธ์คํด์ค๋ฅผ ์ฐธ์กฐํ ์ ์๋๋ก ๊ตฌํํ๊ณ ์๋ค.
- ๊ฐ์ฒด ์งํฅ์ ํต์ฌ์ ๋คํ์ฑ์ด๋ค.
1-2. SOLID(๊ฐ์ฒด์งํฅ์ค๊ณ)
- ์ข์ ์ค๊ณ๋ฅผ ์ํด์๋ ๊ฒฐํฉ๋๋ ๋ฎ์ถ๊ณ ์์ง๋๋ ๋์ฌ์ผ ํ๋ค.
- ๊ฒฐํฉ๋ : ๋ชจ๋(ํด๋์ค)๊ฐ์ ์ํธ ์์กด ์ ๋
- ๊ฒฐํฉ๋๊ฐ ๋ฎ์ผ๋ฉด ํด๋์ค๊ฐ์ ์ํธ ์์กด์ฑ์ด ์ค์ด๋ค๊ธฐ ๋๋ฌธ์ ๊ฐ์ฒด์ ์ฌ์ฌ์ฉ, ์ ์ง๋ณด์ ์ ๋ฆฌ
- ์์ง๋ : ํ๋์ ๋ชจ๋ ๋ด๋ถ์ ์กด์ฌํ๋ ๊ตฌ์ฑ ์์๋ค์ ๊ธฐ๋ฅ์ ๊ด๋ จ์ฑ
- ์์ง๋๊ฐ ๋์ ๋ชจ๋์ ํ๋์ ์ฑ
์์ ์ง์ค, ๋
๋ฆฝ์ฑ์ด ๋์์ง๊ธฐ ๋๋ฌธ์ ์ฌ์ฌ์ฉ, ์ ์ง๋ณด์ ์ ๋ฆฌ
-
SRP: ๋จ์ผ ์ฑ
์ ์์น(single responsibility principle)
- ํ ํด๋์ค๋ ํ๋์ ์ฑ
์๋ง ๊ฐ์ ธ์ผ ํ๋ค.
-
OCP: ๊ฐ๋ฐฉ-ํ์ ์์น (Open/closed principle)
-
ํ์ฅ์๋ ์ด๋ ค ์์ผ๋ ๋ณ๊ฒฝ์๋ ๋ซํ ์์ด์ผ ํ๋ค.
-
๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ ค๋ฉด ์์ค์ฝ๋์ ์์ ์ด ๋ถ๊ฐํผํ๋ค. ๋คํ์ฑ์ ์ด์ฉํ๋๋ผ๋ ํด๋ผ์ด์ธํธ ์ฝ๋๋ฅผ ๋ณ๊ฒฝํด์ผ ํ๋ค. ์ด๋ OCP ์์น์ ์๋ฐฐ๋๋ค.
์ด๊ฒ์ ํด๊ฒฐํ๊ธฐ ์ํด์๋ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ , ์ฐ๊ด๊ด๊ณ๋ฅผ ๋งบ์ด์ฃผ๋ ๋ณ๋์ ์กฐ๋ฆฝ, ์ค์ ์๊ฐ ํ์ํ๋ค.
-
LSP: ๋ฆฌ์ค์ฝํ ์นํ ์์น (Liskov substitution principle)
- ํ๋ก๊ทธ๋จ์ ๊ฐ์ฒด๋ ํ๋ก๊ทธ๋จ์ ์ ํ์ฑ์ ๊นจ๋จ๋ฆฌ์ง ์์ผ๋ฉด์ ํ์ ํ์
์ ์ธ์คํด์ค๋ก ๋ฐ๊ฟ ์ ์์ด์ผ ํ๋ค.๋คํ์ฑ์์ ํ์ ํด๋์ค๋ ์ธํฐํ์ด์ค ๊ท์ฝ์ ๋ค ์ง์ผ์ผ ํ๋ค๋ ๊ฒ, ๋คํ์ฑ์ ์ง์ํ๊ธฐ ์ ํ ์์น,
์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ๊ตฌํ์ฒด๋ ๋ฏฟ๊ณ ์ฌ์ฉํ๋ ค๋ฉด, ์ด ์์น์ด ํ์ํ๋ค.
-
ISP: ์ธํฐํ์ด์ค ๋ถ๋ฆฌ ์์น (Interface segregation principle)
- ํน์ ํด๋ผ์ด์ธํธ๋ฅผ ์ํ ์ธํฐํ์ด์ค ์ฌ๋ฌ ๊ฐ๊ฐ ๋ฒ์ฉ ์ธํฐํ์ด์ค ํ๋๋ณด๋ค ๋ซ๋ค.
-
DIP: ์์กด๊ด๊ณ ์ญ์ ์์น (Dependency inversion principle)
- ํ๋ก๊ทธ๋๋จธ๋ โ์ถ์ํ์ ์์กดํด์ผ์ง, ๊ตฌ์ฒดํ์ ์์กดํ๋ฉด ์๋๋ค.โ ์์กด์ฑ ์ฃผ์
์ ์ด ์์น ์ ๋ฐ๋ฅด๋ ๋ฐฉ๋ฒ ์ค ํ๋๋ค. ์ฝ๊ฒ ์ด์ผ๊ธฐํด์ ๊ตฌํ ํด๋์ค์ ์์กดํ์ง ๋ง๊ณ , ์ธํฐํ์ด์ค์ ์์กดํ๋ผ๋ ๋ป์ด๋ค.
์ฐธ๊ณ
์คํ๋ง
๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ(์ํค๋ฐฑ๊ณผ)
์คํ๋ง ํ๋ ์์ํฌ(์ํค๋ฐฑ๊ณผ)
SOLID(์ํค๋ฐฑ๊ณผ)