๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ
๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ ์ด์ : ์ปดํจํฐ ์ค์ฌ. ์ปดํจํฐ๊ฐ ์ฌ๊ณ ํ๋๋๋ก ํ๋ก๊ทธ๋๋ฐ์ ํ๋ ๊ฒ.
๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ: ์ธ๊ฐ ์ค์ฌ. ํ์ค ์ธ๊ณ๋ฅผ ํ๋ก๊ทธ๋๋ฐ์ผ๋ก ์ฎ๊ฒจ์ ํ๋ก๊ทธ๋๋ฐํ๋ ๊ฒ.
ํ์ค ์ธ๊ณ์ ์ฌ๋ฌผ๋ค์ ๊ฐ์ฒด๋ผ๊ณ ๋ณด๊ณ ๊ทธ ๊ฐ์ฒด๋ก๋ถํฐ ํ์ํ ํน์ง๋ค์ ๋ฝ์์ ํ๋ก๊ทธ๋๋ฐ ํจ. (--> ์ถ์ํ)
์ฅ์
- ์ฝ๋ ์ฌ์ฌ์ฉ์ฑ์ด ๋์. ์์ฃผ ์ฌ์ฉ๋๋ ๋ก์ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๋ง๋ค์ด๋๋ฉด ๊ณ์ํด์ ์ฌ์ฉํ ์ ์๊ณ ์ ๋ขฐ์ฑ ํ๋ณด๋จ.
- ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ฐ์ข ์์ธ์ํฉ์ ๋ง๊ฒ ์ ๋ง๋ค์ด๋๋ฉด ๊ฐ๋ฐ์๊ฐ ์ฌ์ํ ์ค์๋ฅผ ํ๋๋ผ๋ ์ปดํ์ผ ๋จ๊ณ์์ ์ก์๋ผ ์ ์์ผ๋ฏ๋ก ๋ฒ๊ทธ ๋ฐ์ ๊ฐ์
- ๋ด๋ถ์ ์ผ๋ก ์ด๋ป๊ฒ ๋์ํ๋์ง ๋ชฐ๋ผ๋ ๊ฐ๋ฐ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ ๊ณตํ๋ ๊ธฐ๋ฅ๋ค์ ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ ์์ฐ์ฑ์ด ๋์.
- ๊ฐ์ฒด ๋จ์๋ก ์ฝ๋๊ฐ ๋๋ ์ ธ ์์ฑ๋๊ธฐ ๋๋ฌธ์ ๋๋ฒ๊น ์ด ์ฝ๊ณ ์ ์ง๋ณด์์ ์ฉ์ด
- ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง์ ํ ๋ ๊ฐ์ฒด์ ๋งคํํ๋ ๊ฒ์ด ์์ --> ์๊ตฌ์ฌํญ์ ๋ณด๋ค ๋ช ํํ๊ฒ ํ์ ํ์ฌ ํ๋ก๊ทธ๋๋ฐ ๊ฐ๋ฅ
๋จ์
- ๊ฐ์ฒด ๊ฐ์ ์ ๋ณด ๊ตํ์ ๋ชจ๋ ๋ฉ์์ง ๊ตํ -> ์คํ ์์คํ ์ ๋ง์ overhead ๊ฐ ๋ฐ์. (ํ๋์จ์ด์ ๋ฐ์ ์ผ๋ก ๋ง์ ๋ถ๋ถ ๋ณด์๋จ)
- ๊ฐ์ฒด๊ฐ ์ํ๋ฅผ ๊ฐ๋ ๊ฒ. ๋ณ์๋ก ์ธํด ๊ฐ์ฒด๊ฐ ์์ธกํ ์ ์๋ ์ํ๋ฅผ ๊ฐ๊ฒ ๋๊ณ , ๋ฒ๊ทธ ๋ฐ์์ํด -> ์ด๋ฅผ ๋ณด์ํ๊ธฐ ์ํด ํจ์ํ ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์ ๋ฑ์ฅ
- SRP(Single Responsibility Principle) : ๋จ์ผ ์ฑ
์ ์์น
ํด๋์ค๋ ๋จ ํ๋์ ์ฑ ์์ ๊ฐ์ ธ์ผ ํ๋ค.
ํด๋์ค๋ฅผ ๋ณ๊ฒฝํ๋ ์ด์ ๋ ๋จ ํ๋์ ์ด์ ์ด์ด์ผ ํ๋ค. - OCP(Open-Closed Principle) : ๊ฐ๋ฐฉ-ํ์ ์์น
ํ์ฅ์ ์ด๋ ค ์์ด์ผ ํ๋ค.
๋ณ๊ฒฝ์ ๋ซํ ์์ด์ผ ํ๋ค. - LSP(Liskov Substitution Principle) : ๋ฆฌ์ค์ฝํ ์นํ ์์น
์์ ํ์ ์ ๊ฐ์ฒด๋ฅผ ํ์ ํ์ ์ ๊ฐ์ฒด๋ก ์นํํ์ ๊ฒฝ์ฐ
-> ์์ ํ์ ์ ์ฌ์ฉํ๋ ํ๋ก๊ทธ๋จ์ด ์ ์์ ์ผ๋ก ๋์ํด์ผ ํ๋ค. - ISP(Interface Segregation Principle) : ์ธํฐํ์ด์ค ๋ถ๋ฆฌ ์์น
์ธํฐํ์ด์ค๋ ๊ทธ ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ๋ ํด๋ผ์ด์ธํธ๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ถ๋ฆฌํด์ผ ํ๋ค. - DIP(Dependency Inversion Principle) : ์์กด ์ญ์ ์์น
๊ณ ์์ค ๋ชจ๋์ ์ ์์ค ๋ชจ๋์ ๊ตฌํ์ ์์กดํด์๋ ์๋๋ค.
์ถ์ฒ https://github.com/JaeYeopHan/Interview_Question_for_Beginner