728x90
๋ฐ์ํ
SRP(Single responsibility principle) ๋จ์ผ ์ฑ ์ ์์น
- ํ ํด๋์ค๋ ํ๋์ ์ฑ ์๋ง ๊ฐ์ ธ์ผ ํ๋ค.
- ์ค์ํ ๊ธฐ์ค์ ๋ณ๊ฒฝ์ด๋ค. ๋ณ๊ฒฝ์ด ์์ ๋ ํ๊ธ ํจ๊ณผ๊ฐ ์ ์ผ๋ฉด ๋จ์ผ ์ฑ ์ ์์น์ ์ ๋ฐ๋ฅธ ๊ฒ์ด๋ค.
- ex) UI ๋ณ๊ฒฝ, ๊ฐ์ฒด์ ์์ฑ๊ณผ ์ฌ์ฉ์ ๋ถ๋ฆฌ
OCP(Open/closed principle) ๊ฐ๋ฐฉ-ํ์ ์์น
- ์ํํธ์จ์ด ์์๋ ํ์ฅ์๋ ์ด๋ ค ์์ผ๋ ๋ณ๊ฒฝ์๋ ๋ซํ ์์ด์ผ ํ๋ค.
- ๋คํ์ฑ์ ์ฌ์ฉํ๋๋ผ๋ OCP ์์น์ ์งํฌ ์ ์๋ค๋ ๋ฌธ์ ์ (ํด๋ผ์ด์ธํธ ์ฝ๋ ๋ณ๊ฒฝ)์ด ์๋ค.
- ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ , ์ฐ๊ด๊ด๊ณ๋ฅผ ๋งบ์ด์ฃผ๋ ๋ณ๋์ ์กฐ๋ฆฝ, ์ค์ ์๊ฐ ํ์ํ๋ค. (์คํ๋ง ์ปจํ ์ด๋์ ์ญํ )
LSP(Liskov substitution principle) ๋ฆฌ์ค์ฝํ ์นํ ์์น
- ํ๋ก๊ทธ๋จ์ ๊ฐ์ฒด๋ ํ๋ก๊ทธ๋จ์ ์ ํ์ฑ์ ๊นจ๋จ๋ฆฌ์ง ์์ผ๋ฉด์ ํ์ ํ์ ์ ์ธ์คํด์ค๋ก ๋ฐ๊ฟ ์ ์์ด์ผ ํ๋ค.
- ex) ์๋์ฐจ ์ธํฐํ์ด์ค์ ์์ ์ ์์ผ๋ก ๊ฐ๋ผ๋ ๊ธฐ๋ฅ, ๋ค๋ก ๊ฐ๊ฒ ๊ตฌํํ๋ฉด LSP ์๋ฐ, ๋๋ฆฌ๋๋ผ๋ ์์ผ๋ก ๊ฐ์ผํ๋ค.
ISP(Interface segregation principle) ์ธํฐํ์ด์ค ๋ถ๋ฆฌ ์์น
- ํน์ ํด๋ผ์ด์ธํธ๋ฅผ ์ํ ์ธํฐํ์ด์ค ์ฌ๋ฌ ๊ฐ๊ฐ ๋ฒ์ฉ ์ธํฐํ์ด์ค ํ๋๋ณด๋ค ๋ซ๋ค.
- ์๋์ฐจ ์ธํฐํ์ด์ค -> ์ด์ ์ธํฐํ์ด์ค, ์ ๋น ์ธํฐํ์ด์ค๋ก ๋ถ๋ฆฌ
- ์ฌ์ฉ์ ํด๋ผ์ด์ธํธ -> ์ด์ ์ ํด๋ผ์ด์ธํธ, ์ ๋น์ฌ ํด๋ผ์ด์ธํธ๋ก ๋ถ๋ฆฌ
- ๋ถ๋ฆฌํ๋ฉด ์ ๋น ์ธํฐํ์ด์ค ์์ฒด๊ฐ ๋ณํด๋ ์ด์ ์ ํด๋ผ์ด์ธํธ์ ์ํฅ์ ์ฃผ์ง ์์
- ์ธํฐํ์ด์ค๊ฐ ๋ช ํํด์ง๊ณ , ๋์ฒด ๊ฐ๋ฅ์ฑ์ด ๋์์ง๋ค.
DIP(Dependency inversion principle) ์์กด๊ด๊ณ ์ญ์ ์์น
- ํ๋ก๊ทธ๋๋จธ๋ "์ถ์ํ์ ์์กดํด์ผ์ง, ๊ตฌ์ฒดํ์ ์์กดํ๋ฉด ์๋๋ค." ์์กด์ฑ ์ฃผ์ ์ ์ด ์์น์ ๋ฐ๋ฅด๋ ๋ฐฉ๋ฒ ์ค ํ๋๋ค.
- ํด๋ผ์ด์ธํธ ์ฝ๋๊ฐ ๊ตฌํ ํด๋์ค์ ์์กดํ์ง ๋ง๊ณ , ์ธํฐํ์ด์ค(์ญํ )์ ์์กดํ๋ผ๋ ๋ป์ด๋ค.
'Backend > Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Spring] MVC(Model, View, Controller) ์ ๋ฆฌ (0) | 2022.01.16 |
---|---|
[Spring] IntelliJ ํ๋ก์ ํธ ํ๊ฒฝ ์ค์ (0) | 2022.01.11 |