๐ ๊ณต๋ถ ๊ณ๊ธฐ
๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ํ๋ค๋ฉด! ์ด๋ฅผ ์งํค๊ธฐ ์ํ 5๊ฐ์ง ์์น์ ๋ํด ์ ํ์๊ฐ ์๊ธฐ์ ๊ณต๋ถ! ์ผ๋จ์ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ์ฌํญ๋ง ๋จผ์ ์ ๋ฆฌ!
๐SOLID๋?
๊ฐ์ฒด ์งํฅ์ 5๋ ์์น์ผ๋ก ๊ฐ ์์น์ ์ฒซ ๋จธ๋ฆฟ๊ธ์๋ฅผ ๋ฐ์ SOLID๋ผ๊ณ ํฉ๋๋ค.
S : SRP : Single Responsibility Principle : ๋จ์ผ ์ฑ ์ ์์น
O : OCP : Open-Colosed Principle : ๊ฐ๋ฐ-ํจ์ ์์น
L : LSP : Liskov Substitution Principle : ๋ฆฌ์ค์ฝํ ์นํ ์์น
I : ISP : Interface Segregation Principle : ์ธํฐํ์ด์ค ๋ถ๋ฆฌ ์์น
D : DIP : Dependency Inversion Principle : ์์กด์ฑ ์ญ์ ์์น
๐SRP : Single Responsibility Principle : ๋จ์ผ ์ฑ ์ ์์น
- ํ ํด๋์ค๋ ๋จ ํ๊ฐ์ง์ ์ฑ ์(๋ณ๊ฒฝ ์ด์ )๋ฅผ ๊ฐ์ ธ์ผํ๋ค.
์ฌ๊ธฐ์ ๋ณ๊ฒฝ์ ์ํ ์ด์ ์ฑ ์์ด๋ผ ํ๋ฉฐ, ๋ณ๊ฒฝ์ ์ด์ ๊ฐ ์ฌ๋ฌ๊ฐ์ง๊ฐ ์๊ฒผ๋ค๋ฉด ํ๊ฐ์ง ์ด์์ ์ฑ ์์ ๋งก๊ณ ์๋ ๊ฒ์ด๋ค.
- ์ด๋ ์์ง๋์ ๊ด๋ จ์ด ์์ผ๋ฉฐ, ์์ง๋๋ ํ๋์ ํด๋์ค๊ฐ ํ๋์ ์ถ์์ ์ธ ๊ฐ๋ ์ ๋ํ๋ด๋ฉฐ, ๊ทธ ํด๋์ค์ ๋ชฉ์ ๊ณผ ์๋ฏธ๊ฐ ํ ์ค๋ก ๊ธฐ์ ํ ์ ์์ด์ผ ํ๋ค.
๐OCP : Open-Colosed Principle : ๊ฐ๋ฐ-ํจ์ ์์น
- ํ์ฅ์๋ ์ด๋ ค์์ด์ผํ๊ณ ๋ณ๊ฒฝ(์ฝ๋ ์์ )์๋ ๋ซํ์์ด์ผ ํ๋ค.
์ด๋ ์์คํ ์ ํ์ฅํ๊ธฐ๋ ์ฌ์์ผ ํ๋๋ฐ ๋ณ๊ฒฝ์ผ๋ก ์ธํด ์์คํ ์ ๋๋ฌด ํฐ ์ํฅ์ ์ค์ ์๋๋ค๋ ๋ชฉํ๋ฅผ ๊ฐ์ง๊ณ ์ค๊ณํด์ผํ๋ค.
- ์ฝ๋๋ฅผ ์์ ํ๋ ค๋ฉด ์์ํด์ ์์ ?
๐LSP : Liskov Substitution Principle : ๋ฆฌ์ค์ฝํ ์นํ ์์น
- ์์ ํ์ ์ ๊ฐ์ฒด๋ฅผ ํ์ ํ์ ์ ๊ฐ์ฒด๋ก ์นํํ๋ค๊ณ ํ๋๋ผ๋ ์์ ํ์ ์ผ๋ก ๋์ํ๋ ๊ธฐ์กด ํ๋ก๊ทธ๋จ์ ์ ์์ ์ผ๋ก ๋์ํด์ผํ๋ ์์น์ด๋ค.
๐ISP : Interface Segregation Principle : ์ธํฐํ์ด์ค ๋ถ๋ฆฌ ์์น
- ํด๋ผ์ด์ธํธ๊ฐ ์ฌ์ฉํ์ง ์๋ ๋ฉ์๋์ ์์กดํ์ง ์์์ผํ๋ค๋ ์์น์ด๋ค.
๐DIP : Dependency Inversion Principle : ์์กด์ฑ ์ญ์ ์์น
- ์์ ์์ค์ ๋ชจ๋์ ํ์ ๋ชจ๋์ ์์กดํด์๋ ์๋๋ฉฐ, ๋ ๋ชจ๋ ์ถ์ํ์ ์์กดํด์ผ ํ๋ค.
- ์ถ์ํ๊ฐ ๊ตฌ์ฒด์ ์ธ ์ฌํญ์ ์์กดํด์๋ ์๋๋ฉฐ ๊ตฌ์ฒด์ ์ธ ์ฌํญ์ด ์ถ์ํ์ ์์กดํด์ผ ํ๋ค.
โ ๊ณต๋ถ์๋ฃ
SOLID ์์น
๊ฐ์ฒด์งํฅ 5๋ ์์น
johngrib.github.io
'Computer Science > Basic' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| ํ ์คํธ ์ฝ๋ ๋? (0) | 2022.12.10 |
|---|---|
| Call by Value vs Call by Reference (0) | 2022.12.09 |
| ์ปดํจํฐ ๊ณผํ CS - C ๊ธฐ์ด (2) | 2022.10.23 |
| ์ฝ์(Console), ํฐ๋ฏธ๋(Terminal), ์(Shell), ํ๋กฌํํธ(Prompt) (0) | 2022.10.23 |
| ์ปดํจํฐ ๊ณผํ CS - ์คํฌ๋์น (0) | 2022.10.20 |
