๊ฐ์ฒด์งํฅ ํน์ง
- ์ถ์ํ
- ์ด๋ค ์์ญ์์ ํ์๋ก ํ๋ ์์ฑ์ด๋ ํ๋์ ์ถ์ถํ๋ ์์ (๊ณตํต์ , ๋ํ์ ํน์ง)
- ์บก์ํ
- ์บก์ํ๋ฅผ ํตํด ๊ฐ์ฒด ๊ฐ ๋ฎ์ ๊ฒฐํฉ๋๋ฅผ ์ ์งํ ์ ์๋ค.
- ์ ๋ณด์๋
- ์ผ๋ฐํ ๊ด๊ณ (์์ ๊ด๊ณ)
- ์ฌ๋ฌ ๊ฐ์ฒด๋ค์ด ๊ฐ์ง ๊ณตํต๋ ํน์ฑ์ ํ๋์ ๊ฐ๋ ์ผ๋ก ์ฑ๋ฆฝ์ํค๋ ๊ณผ์
- ๋คํ์ฑ
- ์๋ก ๋ค๋ฅธ ํด๋์ค์ ๊ฐ์ฒด๊ฐ ๊ฐ์ ๋ฉ์์ง๋ฅผ ๋ฐ์์ ๋ ๊ฐ์ ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ๋์ํ๋ ๋ฅ๋ ฅ
๊ฐ์ฒด์งํฅ์ ์ค๊ณ ์์น
๊ฐ์ฒด์งํฅ์ ์๋ฆฌ๋ฅผ ์ด์ฉํ๋ฉด ์ข ๋ ์ ์ง๋ณด์์ ํ์ฅ์ด ์ฌ์ด ์ํํธ์จ์ด๋ฅผ ๋ง๋ค ์ ์๋ค.
๊ฐ์ฒด์งํฅ์ 5๋ ์ค๊ณ ์์น : SOLID
- ๋จ์ผ ์ฑ
์ ์์น SRP (Single Responsibility Principle)
- ๋ชจ๋ ํด๋์ค๋ ํ๋์ ์ฑ ์๋ง์ ๊ฐ์ง๋ค.
- ๊ฐ ํด๋์ค๋ ์ฑ ์์ ์์ ํ ์บก์ํ ํด์ผ ํ๋ค.
- ๊ฐ๋ฐฉ-ํ์ ์์น OCP (Open Closed Principle)
- ํ์ฅ์๋ ์ด๋ ค์๊ณ ์์ ์๋ ๋ซํ์๋ค.
- ์๊ตฌ์ฌํญ ๋ณ๊ฒฝ์ด๋ ์ถ๊ฐ์๋ ๊ธฐ์กด์ ์ฝ๋๋ฅผ ๋ณ๊ฒฝํ์ง ์์ผ๋ฉด์ ๊ธฐ๋ฅ์ ์ถ๊ฐํ ์ ์๋๋ก ์ค๊ณ๋์ด์ผ๋ง ํ๋ค.
- ํ์ฅ์๋ ์ด๋ ค์๊ณ ์์ ์๋ ๋ซํ์๋ค.
- ๋ฆฌ์ค์ฝํ ์นํ ์์น LSP (Liskov Substitution Principle)
- ์์ ํด๋์ค๋ ์ธ์ ๋ ๋ถ๋ชจ ํด๋์ค๋ฅผ ๋์ฒดํ ์ ์๋ค.
- But, ์์ ํด๋์ค๋ ๋ถ๋ชจ ํด๋์ค์ ์ฑ ์์ ๋ณ๊ฒฝํ์ง ์๊ณ ํ์ฅ๋ง์ ์ํํด์ผ ํ๋ค.
- ์์ ํด๋์ค๋ ์ธ์ ๋ ๋ถ๋ชจ ํด๋์ค๋ฅผ ๋์ฒดํ ์ ์๋ค.
- ์ธํฐํ์ด์ค ๋ถ๋ฆฌ์์น ISP (Interface Segregation Principle)
- ํ ํด๋์ค๋ ์์ ์ด ์ฌ์ฉํ์ง ์๋ ์ธํฐํ์ด์ค๋ ๊ตฌํํ์ง ๋ง์์ผ ํ๋ค.
- ์์ ์ด ์ด์ฉํ์ง ์๋ ๊ธฐ๋ฅ ๋ณํ์ ์ํฅ์ ๋ฐ์ง ์๋๋ก ์ค๊ณํด์ผ ํ๋ค.
- ์ฆ, ์ธํฐํ์ด์ค๋ฅผ ๊ฐ ํด๋ผ์ด์ธํธ์ ํนํ๋๋๋ก ๋ถ๋ฆฌ์์ผ์ผ๋ง ํ๋ค.
- ์์กด ์ญ์ ์์น DIP (Dependency Inversion Principle)
- ์์กด ๊ด๊ณ๋ฅผ ๋งบ์ ๋๋ ๋ณํ๊ฐ ๋ง์ ๊ฒ๋ณด๋จ ์ ์ ๊ฒ ๋๋ ์๋ ๊ฒ์ ์์กดํด์ผ ํ๋ค.
- ๊ตฌ์ฒด์ ์ธ ํด๋์ค๋ณด๋จ ์ธํฐํ์ด์ค๋ ์ถ์ ํด๋์ค์ ๊ด๊ณ๋ฅผ ๋งบ์.
- ํด๋์ค ๊ฐ ์์กด ๊ด๊ณ?
- ํ ํด๋์ค๊ฐ ์ด๋ค ๊ธฐ๋ฅ์ ์ํํ ๋ ๋ค๋ฅธ ํด๋์ค์ ์๋น์ค๊ฐ ํ์ํ ๊ฒฝ์ฐ (์์กด ๊ด๊ณ)
- ์์กด ๊ด๊ณ๋ฅผ ๋งบ์ ๋๋ ๋ณํ๊ฐ ๋ง์ ๊ฒ๋ณด๋จ ์ ์ ๊ฒ ๋๋ ์๋ ๊ฒ์ ์์กดํด์ผ ํ๋ค.
'๐ญComputer Science๐ญ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Spring - Spring MVC - SpringBoot์ ์ฐจ์ด (0) | 2021.04.01 |
---|