โถ ์ค๋ ์คํ ๊ฐ๋ฅํ ์ธ๋ถ ๋ชฉํ
=> ๊ณต๋ถ ๊ด๋ จ
1) ๋ฐฐ์ด ๋ด์ฉ ๋ณต์ต o
2) ์ธํฐํ์ด์ค์์ ๋ฉ์๋๋ฅผ ๊ตฌํํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ๋์ง o
3) SOLID 5์์น ์ ๋๋ก ์๊ธฐ o
4) ์ปฌ๋ ์ ํ๋ ์์ํฌ๋? ์์ฝ ์ค๋ช o
5) ์๋ฐ์ ์ ์ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ 2 o
6) ์์ ์๋ฐ๋ก MVC ํจํด ๊ตฌํ์ ์ด๋ป๊ฒ ํด์ผ ํ๋์ง o
=> ํ์ด๋ ํ๋ก์ ํธ ๊ด๋ จ
1) ํ์ด๋ ์ฌ์ดํธ ์์๋ณด๊ธฐ (๊ตฌ์ฒด์ ์ธ ๊ฒ ์ง๋ฌธ)
2) ๊ตฌ๊ธ ํฌ๋กฌ ๋๋ฒ๊น ๊ณต๋ถ
โถ ์์ ๊ณต๋ถ ๊ด๋ จ
> JSON ๊ฐ์ฒด์์ ๋ฐฐ์ด๋ก ๋ฐ์์ฌ ๋ ์ํฐํค๋ ๋ฐ์ดํ๊ฐ ๋ค์ด๊ฐ๋ฉด ์๋ฌ๊ฐ ๋๋ค. (์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ฒด๋ก ํํํ ์ ์๋ ๋ฌธ์๋ค parse()๊ฐ ์์ค ๊ฐ์ฒด๋ก ๋ฐ๊พธ์ง ๋ชปํจ)
> ์ ๋ ฅ ๋ฐ์ ๊ทธ๋๋ก ์ถ๋ ฅํ๋๊ฒ ์ ์์ด๋ค. (๋ค๋ฅธ ํ๊ทธ๋ก ๋ฐ๊ฟ ์ถ๋ ฅํ๋ฉด ๋ฌธ์ ๊ฐ ๋ฐ์ํจ)
> jQuery append : ์์์ผ๋ก ์์ฑํด์ ์ถ๊ฐ, appendTo : ์์์ผ๋ก ์ด๋ ๋ฐ๋์ธ prepend๊ฐ ์์
> xml ๋ฐ์ดํฐ๋ค์ ์คํ๋ง์ด ์์์ ๋ง๋ค์ด์ค ๋ง๋ค์ด์ง๋ ์ค์ ๋ง ํด์ฃผ๋ฉด ๋จ
> SI๋ ์ ๋ ๊ฐ์ง๋ง๋ผ ๊ตฌ๊ธ๋งํ ๋ ์ฝ๋๋ ์ ๋๋ก ์๊ณ ๊ฐ์ ธ์ค์
> ๋์์ธ ํจํด์ด ๋ค์ํ๊ฒ ์ ์ฉ๋ ๊ฒ๋ ํ์ ํ ์ ์์ด์ผํ๋ค.
> ๋๊ธ์ ์คํ๋ง์์ ํ์ด์ง ์ฒ๋ฆฌ๊น์ง ๊ตฌํํ ์์
> RSS ์๋น์ค : (Really Simple Syndication ๋๋ Rich Site Summary) : ์ค์๊ฐ์ผ๋ก ๋ณ๊ฒฝ๋๋ ์ ๋ณด๋ฅผ ์ ๊ณตํ๊ธฐ ์ํ ์๋น์ค ex) ๋ด์ค ๊ฐ์ ๊ฒ
> ajax ๊ธฐ๋ฅ์ ํ์ฌ ์๋ฒ์ ์กด์ฌํ๋ ์นํ๋ก๊ทธ๋จ์ ์์ฒญํ์ฌ ์๋ต๊ฒฐ๊ณผ๋ฅผ ์ ๊ณต๋ฐ์ ์ฒ๋ฆฌ๋ง ๊ฐ๋ฅ => ๋ค๋ฅธ ์๋ฒ์
์กด์ฌํ๋ ์นํ๋ก๊ทธ๋จ์ ์์ฒญํ ๊ฒฝ์ฐ ์๋ฌ ๋ฐ์ - ์๋ฌ์ฝ๋ : 0
> proxy server : ์ค๊ณ์ ์ญํ ์ ํ๋ ์๋ฒ (๋ฐ์ดํฐ๋ฅผ ๋์ ์์ฒญํด์ ๋ฐ๊ณ ๋๊ฒจ์ฃผ๋ ์ญํ )
> GetMethod : Get๋ฐฉ์์ผ๋ก ์นํ๋ก๊ทธ๋จ์ ์์ฒญํ๊ธฐ ์ํ ํด๋์ค (๊ฐ์์ ๋ธ๋ผ์ฐ์ ๋ฅผ ์ด์ฉํ์ฌ ์นํ๋ก๊ทธ๋จ์ ์์ฒญํ๊ธฐ ์ํ ์ธ์คํด์ค๋ฅผ ์์ฑํ๊ธฐ ์ํด ์ฌ์ฉ)
> PostMethod : Post๋ฐฉ์์ผ๋ก ์นํ๋ก๊ทธ๋จ์ ์์ฒญํ๊ธฐ ์ํ ํด๋์ค
> HttpClient.executeMethod(Method method) : ๊ฐ์์ ๋ธ๋ผ์ฐ์ ๋ฅผ ์ด์ฉํ์ฌ ์นํ๋ก๊ทธ๋จ์ ์์ฒญํ๋ ๋ฉ์๋
=> ์์ฒญ์ ๋ํ ์ํ์ฝ๋ ๋ฐํ
> Method.getResponseBodyAsString() : ์์ฒญ์ ๋ํ ์๋ต๊ฒฐ๊ณผ๋ฅผ ๋ฌธ์์ด๋ก ๋ณํํ์ฌ ๋ฐํํ๋ ๋ฉ์๋
=> ์๋ต๊ฒฐ๊ณผ๋ฅผ ๋ฐํ๋ฐ์ ์ํ๋ ๋ฌธ์ํํ(์บ๋ฆญํฐ์ )๋ก ๋ณํํ์ฌ ์ ์ฅ
> Method.releaseConnection() : ์์ฒญ ์ ๋ณด๋ฅผ ์ ๊ฑฐํ๋ ๋ฉ์๋
โถ ๊ฐ์ธ ๊ณต๋ถ ๊ด๋ จ
์ธํฐํ์ด์ค์์ ๋ฉ์๋ ์์ธ ์ ์ธ ๊ฐ๋ฅ ์ฌ๋ถ
- ๊ธฐ๋ณธ์ ์ธ ํน์ง
- ์ถ์ํด๋์ค๋ณด๋ค ์ถ์ํ ์ ๋๊ฐ ๋์์ ์ถ์ ํด๋์ค์ ๋ฌ๋ฆฌ ๋ชธํต์ ๊ฐ์ถ ์ผ๋ฐ ๋ฉ์๋์ ๋ฉค๋ฒ ๋ณ์๋ฅผ ๊ฐ์ง ์ ์๋ค.
- ๊ธฐ๋ฅ์ ๋ช ์์ ์ผ๋ก ์ ์ธํ๋ ์ญํ ๋ก ์ถ์ ๋ฉ์๋์ ์์๋ก๋ง!
- ๊ตฌํํ ์ฝ๋๊ฐ ์์ผ๋ฏ๋ก ๋น์ฐํ ์ธ์คํด์ค๋ฅผ ์์ฑํ ์ ์๋ค.
- ๋ค์ค ์์์ด ๊ฐ๋ฅํ๋ฉฐ ์ธํฐํ์ด์ค ๊ฐ์ ์์ ๊ด๊ณ๋ extends ํค์๋ ์ด์ฉ
- ํด๋์ค์์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋ ค๋ฉด implements ํค์๋ ์ฌ์ฉ
- ํ์ ์์๊ณผ ํ ๋ณํ - ๋คํ์ฑ
- ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ํด๋์ค๋ ์ธํฐํ์ด์ค ํ์ ์ผ๋ก ๋ณ์๋ฅผ ์ ์ธํ์ฌ ์ธ์คํด์ค๋ฅผ ์์ฑํ ์ ์๋ค. ์ด๋ฅผ ์ธํฐํ์ด์ค๊ฐ ๊ตฌํ ์ฝ๋๊ฐ ์๊ธฐ ๋๋ฌธ์ ํ์ ์์์ด๋ผ๊ณ ํ๋ค.
- ํด๋์ค๋ ํด๋น ์ธํฐํ์ด์คํ์ผ๋ก ๋ฌต์์ ํ ๋ณํ์ด ์ด๋ฃจ์ด์ง๋๋ฐ, ํ ๋ณํ ๋์์ ๋ ์ฌ์ฉํ ์ ์๋ ๋ฉ์๋๋ ์ธํฐํ์ด์ค์ ์ ์ธํ ๋ฉ์๋๋ฟ์ด๋ค.
- ์ธํฐํ์ด์ค๋ ๋ฉ์๋์ ๋งค๊ฐ๋ณ์ ํ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ค. ์ธํฐํ์ด์ค ํ์ ์ ๋งค๊ฐ๋ณ์๊ฐ ๊ฐ๋ ์๋ฏธ๋ ๋ฉ์๋ ํธ์ถ ์ ํด๋น ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ํด๋์ค์ ์ธ์คํด์ค๋ฅผ ๋งค๊ฐ๋ณ์๋ก ์ ๊ณตํด์ผ ํ๋ค.
- ๋ฆฌํด ํ์ ์ด ์ธํฐํ์ด์ค๋ผ๋ ๊ฒ์ ๋ฉ์๋๊ฐ ํด๋น ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ํด๋์ค์ ์ธ์คํด์ค๋ฅผ ๋ฐํํ๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค.
- ์ธํฐํ์ด์ค์ ์ฅ์
- ๊ฐ๋ฐ ์๊ฐ ๋จ์ถ์ธํฐํ์ด์ค๊ฐ ์์ฑ๋๋ฉด ์ด๋ฅผ ์ฌ์ฉํด์ ํ๋ก๊ทธ๋จ์ ์์ฑํ๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ค.๋ฉ์๋๋ฅผ ํธ์ถํ๋ ์ชฝ์์๋ ์ ์ธ๋ถ๋ง ์๋ฉด ๋๊ธฐ ๋๋ฌธ์ด๋ค.
- ํ์คํ ๊ฐ๋ฅํ๋ก์ ํธ์ ์ฌ์ฉ๋๋ ๊ธฐ๋ณธ ํ์ ์ธํฐํ์ด์ค๋ก ์์ฑํ ๋ค์, ๊ฐ๋ฐ์๋ค์๊ฒ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ์ฌ ํ๋ก๊ทธ๋จ์ ์์ฑํ๋๋ก ํ๋ฉด ๋ณด๋ค ์ผ๊ด๋๊ณ ์ ํํ๋ ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐ์ด ๊ฐ๋ฅํ๋ค.
- ์๋ก ๊ด๊ณ์๋ ํด๋์ค๋ค ๊ฐ์ ๊ด๊ณ๋ฅผ ๋งบ์ด์ค๋คํ๋์ ์ธํฐํ์ด์ค๋ฅผ ๊ณตํต์ ์ผ๋ก ๊ตฌํํ๋๋ก ํ์ฌ ๊ด๊ณ๋ฅผ ๋งบ์ด ์ค ์ ์๋ค.
- ๋ ๋ฆฝ์ ์ธ ํ๋ก๊ทธ๋๋ฐ์ด ๊ฐ๋ฅ์ธํฐํ์ด์ค๋ฅผ ์ด์ฉํ๋ฉด ํด๋์ค์ ์ ์ธ๊ณผ ๊ตฌํ์ ๋ถ๋ฆฌ์ํฌ ์ ์๊ธฐ ๋๋ฌธ์ ์ค์ ๊ตฌํ์ ๋ ๋ฆฝ์ ์ธ ํ๋ก๊ทธ๋จ์ ์์ฑํ๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ค.
⇒ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ จ ์ธํฐํ์ด์ค๋ฅผ ์ ์ํ๊ณ ์ด๋ฅผ ์ด์ฉํด์ ํ๋ก๊ทธ๋จ์ ์์ฑํ๋ฉด,๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ข ๋ฅ๊ฐ ๋ณ๊ฒฝ๋๋๋ผ๋ ํ๋ก๊ทธ๋จ์ ๋ณ๊ฒฝํ์ง ์๋๋ก ํ ์ ์๋ค.
- ๋ํดํธ ๋ฉ์๋(default method) ⇒ ์ง๋ฌธ์ ๋ํ ๋ต jdk 8 ์ดํ ๊ฐ๋ฅ
- ๊ธฐ๋ณธ ๊ตฌํ์ ๊ฐ์ง๋ ๋ฉ์๋. ์์ default ์์ฝ์ด๋ฅผ ๋ถ์ด๋ฉฐ, ์ถ์ ๋ฉ์๋์ ๋ฌ๋ฆฌ ์ผ๋ฐ ๋ฉ์๋์ฒ๋ผ ๋ชธํต {} ์ด ์์ด์ผ ํ๋ค.
- ๋ํดํธ ๋ฉ์๋๋ ์ธํฐํ์ด์ค์ ์ด๋ฏธ ๊ตฌํ๋์ด ์์ผ๋ฏ๋ก ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ํด๋์ค์์ ์ฝ๋๋ฅผ ๊ตฌํํ ํ์๊ฐ ์๋ค. ๋จ, ๊ตฌํํ๋ ํด๋์ค์์ ์ฌ์ ์ ํ ์ ์๋ค.
- ์ฌ๋ฌ ์ธํฐํ์ด์ค์ ๋ํดํธ ๋ฉ์๋ ๊ฐ์ ์ถฉ๋์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ํด๋์ค์์ ๋ํดํธ ๋ฉ์๋๋ฅผ ์ค๋ฒ๋ผ์ด๋ฉ ํด์ผ ํ๋ค.
- ๋ํดํธ ๋ฉ์๋์ ์์ ํด๋์ค์ ๋ฉ์๋ ๊ฐ์ ์ถฉ๋์์ ํด๋์ค์ ๋ฉ์๋๊ฐ ์์๋๊ณ , ๋ํดํธ ๋ฉ์๋๋ ๋ฌด์๋๋ค.
- ์ ์ ๋ฉ์๋(static method) ⇒ ์ง๋ฌธ์ ๋ํ ๋ต jdk 8 ์ดํ ๊ฐ๋ฅ
- ์ธ์คํด์ค ์์ฑ๊ณผ ์๊ด์์ด ์ธํฐํ์ด์ค ํ์ ์ผ๋ก ํธ์ถํ๋ ๋ฉ์๋๋ค.
- static ์์ฝ์ด๋ฅผ ์ฌ์ฉํ๋ฉฐ, ์ ๊ทผ ์ ์ด์๋ ํญ์ public์ด๋ฉฐ ์๋ตํ ์ ์๋ค.
- ์ ์ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ๋๋ ์ธํฐํ์ด์ค๋ฅผ ์ง์ ์ฐธ์กฐํ์ฌ ์ฌ์ฉํ๋ค.
- ๊ตฌํ ํด๋์ค์์ ์ฌ์ ์ ๋ถ๊ฐ๋ฅ!
๊ฐ์ฒด์งํฅ SOLID 5์์น
1. Single Responsiblity Principle (๋จ์ผ ์ฑ ์ ์์น)
- ์ํํธ์จ์ด์ ์ค๊ณ ๋ถํ(ํด๋์ค, ํจ์ ๋ฑ)์ ๋จ ํ๋์ ์ฑ ์๋ง์ ๊ฐ์ ธ์ผ ํ๋ค.
- ์ฌ๊ธฐ์ ์ฑ ์์ด๋, '๊ธฐ๋ฅ' ์ ๋์ ์๋ฏธ๋ก ํด์ํ๋ฉด ๋๋ค.
- ์ค๊ณ๋ฅผ ์ํ ํ๋ก๊ทธ๋จ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์๋ก์ด ์๊ตฌ์ฌํญ๊ณผ ํ๋ก๊ทธ๋จ ๋ณ๊ฒฝ์ ์ํฅ์ ๋ฐ๋ ๋ถ๋ถ์ด ์ ๋ค. ๋ค์๋งํด, ์์ง๋๋ ๋๊ณ ๊ฒฐํฉ๋๋ ๋ฎ์ ํ๋ก๊ทธ๋จ์ ๋ปํ๋ค. ๋ง์ฝ ํ ํด๋์ค๊ฐ ์ํํ ์ ์๋ ๊ธฐ๋ฅ, ์ฆ ์ฑ ์์ด ๋ง์์ง๋ค. ์ฑ ์์ด ๋ง์์ง๋ฉด ํด๋์ค ๋ด๋ถ์ ํจ์๋ผ๋ฆฌ ๊ฐํ ๊ฒฐํฉ์ ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ด ๋์์ง๋ค. ์ด๋ ์ ์ง๋ณด์์ ๋น์ฉ์ด ์ฆ๊ฐํ๊ฒ ๋๋ฏ๋ก ๋ฐ๋ผ์ ์ฑ ์์ ๋ถ๋ฆฌ์ํฌ ํ์๊ฐ ์๋ค.
2. Open-Closed Principle (๊ฐ๋ฐฉ-ํจ์ ์์น)
- ๊ธฐ์กด์ ์ฝ๋๋ฅผ ๋ณ๊ฒฝํ์ง ์๊ณ (Closed) ๊ธฐ๋ฅ์ ์์ ํ๊ฑฐ๋ ์ถ๊ฐํ ์ ์๋๋ก(Open) ์ค๊ณํด์ผ ํ๋ค.
- OCP์ ๋ง์กฑํ๋ ์ค๊ณ๋ฅผ ํ ๋ ๋ณ๊ฒฝ๋๋ ๊ฒ์ด ๋ฌด์์ธ์ง์ ์ด์ ์ ๋ง์ถ๋ค. ์์ฃผ ๋ณ๊ฒฝ๋๋ ๋ด์ฉ์ ์์ ํ๊ธฐ ์ฝ๊ฒ ์ค๊ณ ํ๊ณ , ๋ณ๊ฒฝ๋์ง ์์์ผ ํ๋ ๊ฒ์ ์์ ๋๋ ๋ด์ฉ์ ์ํฅ์ ๋ฐ์ง ์๊ฒ ํ๋ ๊ฒ์ด ํฌ์ธํธ๋ค. ์ด๋ฅผ ์ํด **์์ฃผ ์ฌ์ฉ๋๋ ๋ฌธ๋ฒ์ด ์ธํฐํ์ด์ค(Interface)**์ด๋ค.
⇒ ์์ ๊ฐ์ ๋์์ธ ํจํด์ Strategy Pattern (์ ๋ต ํจํด) ํ๋ก๊ทธ๋จ
- ๊ฒฐ๊ณผ์ ์ผ๋ก ์ฐ๋ฆฌ๋ SoundPlayer ํด๋์ค์ ๋ณ๊ฒฝ ์์ด ์ฌ์๋๋ ํ์ผ์ ๋ฐ๊ฟ ์ ์์ผ๋ฏ๋ก ์ ์ฝ๋๋ OCP๋ฅผ ๋ง์กฑํ๋ค. ์์ ๋งํ๋ฏ์ด OCP๋ฅผ ๋ง์กฑํ ์ค๊ณ๋ ๋ณ๊ฒฝ์ ์ ์ฐํ๋ฏ๋ก ์ ์ง๋ณด์ ๋น์ฉ์ ์ค์ฌ์ฃผ๊ณ ์ฝ๋์ ๊ฐ๋ ์ฑ ๋ํ ๋์์ง๋ ํจ๊ณผ๋ฅผ ์ป์ ์ ์๋ค.
3. Liskov Substitution Principle (๋ฆฌ์ค์ฝํ ์นํ ์์น)
- ์์ ํด๋์ค๋ ๋ถ๋ชจํด๋์ค์์ ๊ฐ๋ฅํ ํ์๋ฅผ ์ํํ ์ ์์ด์ผ ํ๋ค.
- ๋ฆฌ์ค์ฝํ ์นํ ์์น์ MIT ์ปดํจํฐ ์ฌ์ด์ธ์ค ๊ต์์ธ ๋ฆฌ์ค์ฝํ๊ฐ ์ ์ํ ์ค๊ณ ์์น์ด๋ค. ๋ถ๋ชจ ํด๋์ค์ ์์ ํด๋์ค ์ฌ์ด์ ํ์์๋ ์ผ๊ด์ฑ์ด ์์ด์ผ ํ๋ค๋ ์์น์ด๋ฉฐ, ์ด๋ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์์ ๋ถ๋ชจ ํด๋์ค์ ์ธ์คํด์ค ๋์ ์์ ํด๋์ค์ ์ธ์คํฐ์ค๋ฅผ ์ฌ์ฉํด๋ ๋ฌธ์ ๊ฐ ์์ด์ผ ํ๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค.
- ์์ ๊ด๊ณ์์๋ ์ผ๋ฐํ ๊ด๊ณ(IS-A)๊ฐ ์ฑ๋ฆฝํด์ผ ํ๋ค. ์ผ๋ฐํ ๊ด๊ณ์ ์๋ค๋ ๊ฒ์ ์ผ๊ด์ฑ์ด ์๋ค๋ ๊ฒ์ด๋ค. ๋ฐ๋ผ์ ๋ฆฌ์ค์ฝํ ์นํ ์์น์ ์ผ๋ฐํ ๊ด๊ณ์ ๋ํด ๋ฌป๋ ๊ฒ์ด๋ผ ํ ์ ์๋ค.
4. Dependency Inversion Principle (์์กด ์ญ์ ์์น)
- ์์กด ๊ด๊ณ๋ฅผ ๋งบ์ ๋, ๋ณํํ๊ธฐ ์ฌ์ด๊ฒ ๋ณด๋จ ๋ณํํ๊ธฐ ์ด๋ ค์ด ๊ฒ์ ์์กดํด์ผ ํ๋ค๋ ์์น์ด๋ค.
***** JAVA ๊ฐ์ฒด ์งํฅ ๋์์ธ ํจํด(์ ์ธ์/์ฑํ์ ์ง์, ํ๋น๋ฏธ๋์ด, 2014) p.121 ์ธ์ฉ
- ๋ณํํ๊ธฐ ์ฌ์ด๊ฒ์ด๋ ๊ตฌ์ฒด์ ์ธ ๊ฒ์ ๋งํ๊ณ , ๋ณํํ๊ธฐ ์ด๋ ค์ด ๊ฒ์ด๋ ์ถ์์ ์ธ ๊ฒ์ ๋งํ๋ค. ๊ฐ์ฒด์งํฅ์ ์ธ ๊ด์ ์์ ๋ณด์๋ฉด ๋ณํํ๊ธฐ ์ฌ์ด๊ฒ์ด๋ ๊ตฌ์ฒดํ ๋ ํด๋์ค๋ฅผ ์๋ฏธํ๊ณ , ๋ณํํ๊ธฐ ์ด๋ ค์ด ๊ฒ์ ์ถ์ํด๋์ค๋ ์ธํฐํ์ด์ค๋ฅผ ์๋ฏธํ๋ค. ๋ฐ๋ผ์DIP๋ฅผ ๋ง์กฑํ๋ค๋ ๊ฒ์ ์์กด๊ด๊ณ๋ฅผ ๋งบ์ ๋, ๊ตฌ์ฒด์ ์ธ ํด๋์ค๋ณด๋ค ์ธํฐํ์ด์ค๋ ์ถ์ ํด๋์ค์ ๊ด๊ณ๋ฅผ ๋งบ๋๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค.
- setFile ํด๋์ค๋ฅผ ์ด์ฉํ์ฌ ์คํํ๊ณ ์ ํ๋ ํ์ผ์ ์ฝ๊ฒ ๋ฐ๊ฟ ์ ์๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก ์๋ก์ด ์ค๋์ค ํ์ผ ํฌ๋งท(์๋ฅผ๋ค๋ฉด FLAC)์ ์คํ์ํค๊ณ ์ ํ๋ค๋ฉด, ์๋ก์ด ํด๋์ค(FLAC)๋ฅผ ๋ง๋ ํ play ์ธํฐํ์ด์ค๋ฅผ ์์๋ฐ์ ๊ตฌํํ ํ setFile ๋ฉ์๋๋ฅผ ์ด์ฉํ์ฌ file ๋ฉค๋ฒ ๋ณ์์ ์ฃผ์ ์ํค๋ฉด ๋๋ค. ์ด์๊ฐ์ ๊ธฐ์ ์ '์์กด์ฑ ์ฃผ์ ' ์ด๋ผ ํ๋ค.
5. Interface Segregation Principle (์ธํฐํ์ด์ค ๋ถ๋ฆฌ ์์น)
- ํ ํด๋์ค๋ ์์ ์ด ์ฌ์ฉํ์ง ์๋ ์ธํฐํ์ด์ค๋ ๊ตฌํํ์ง ๋ง์์ผ ํ๋ค. ํ๋์ ์ผ๋ฐ์ ์ธ ์ธํฐํ์ด์ค๋ณด๋ค๋, ์ฌ๋ฌ ๊ฐ์ ๊ตฌ์ฒด์ ์ธ ์ธํฐํ์ด์ค๊ฐ ๋ซ๋ค.
- ์ด๋ ๋ค์ ๋งํด์, ์์ ์ด ์ฌ์ฉํ์ง ์๋ ๊ธฐ๋ฅ(์ธํฐํ์ด์ค)์๋ ์ํฅ์ ๋ฐ์ง ๋ง์์ผ ํ๋ค๋ ์๋ฏธ์ด๋ค.
- ์ฐ๋ฆฌ๋ ์ค๋งํธํฐ์ผ๋ก ์ ํ, ์น์ํ, ์ฌ์ง ์ดฌ์ ๋ฑ ๋ค์ํ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๋ค. ๊ทธ๋ฐ๋ฐ ์ ํ๋ฅผ ํ ๋์๋ ์น์ํ, ์ฌ์ง์ดฌ์ ๋ฑ ๋ค๋ฅธ ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ง ์๋๋ค. ๋ฐ๋ผ์ ์ ํ๊ธฐ๋ฅ๊ณผ ์น์ํ ๊ธฐ๋ฅ ์ฌ์ง ์ดฌ์ ๊ธฐ๋ฅ์ ๊ฐ๊ฐ ๋ ๋ฆฝ๋ ์ธํฐํ์ด์ค๋ก ๊ตฌํํ์ฌ, ์๋ก์๊ฒ ์ํฅ์ ๋ฐ์ง ์๋๋ก ์ค๊ณํด์ผ ํ๋ค. ์ด๋ ๊ฒ ์ค๊ณ๋ ์ํํธ์จ์ด๋ ์ธํฐํ์ด์ค ๋ถ๋ฆฌ ์์น์ ํตํด ์์คํ ์ ๋ด๋ถ ์์กด์ฑ์ ์ฝํ์์ผ ๋ฆฌํฉํ ๋ง, ์์ , ์ฌ๋ฐฐํฌ๋ฅผ ์ฝ๊ฒ ํ ์ ์๋ค.
๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ 2
์ ์ด์
- final ํค์๋ : ์ด ํค์๋๊ฐ ๋ถ์ ๋ณ์์ ๊ฒฝ์ฐ ์ด๊ธฐํ๊ฐ ๋ถ๊ฐ๋ฅํ์ง๋ง ์์ฑ์๋ฅผ ์ด์ฉํ์ฌ ์ด๊ธฐํ๊ฐ ๊ฐ๋ฅํ๋ค.
์ ๊ทผ ์ ์ด์
- ์ ๊ทผ ์ ์ด์๋ฅผ ์ด์ฉํด ์บก์ํ๊ฐ ๊ฐ๋ฅํ๋ค. ๋ฐ์ดํฐ ๊ฐ์ถ๊ธฐ (๊ฐ์ฒด์งํฅ๊ฐ๋ ์ ์บก์ํ)
- ์ ๊ทผ ์ ์ด์๋ฅผ ์ฌ์ฉํ๋ ์ด์
- ์ธ๋ถ๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ๋ณดํธํ๊ธฐ ์ํด์
- ์ธ๋ถ์๋ ๋ถํ์ํ, ๋ด๋ถ์ ์ผ๋ก๋ง ์ฌ์ฉ๋๋, ๋ถ๋ถ์ ๊ฐ์ถ๊ธฐ ์ํด์
์ ์ด์์ ์กฐํฉ
- ๋ฉ์๋์ static๊ณผ abstract๋ฅผ ํจ๊ป ์ฌ์ฉํ ์ ์๋ค. ⇒ ๋ชธํต์ด ์๋ ๋ฉ์๋๋ง ์ฌ์ฉ ๊ฐ๋ฅ
- ํด๋์ค์ abstract์ final์ ๋์์ ์ฌ์ฉํ ์ ์๋ค. ⇒ ๋ชจ์
- abstract๋ฉ์๋์ ์ ๊ทผ ์ ์ด์๊ฐ private์ผ ์ ์๋ค. ⇒ ์ ๊ทผ๋ถ๊ฐ, ์ค๋ฒ๋ผ์ด๋ ๋ถ๊ฐ๋ฅ
- ๋ฉ์๋์ private๊ณผ final์ ๊ฐ์ด ์ฌ์ฉํ ํ์๋ ์๋ค. ⇒ ์ค๋ฒ๋ผ์ด๋ ๋ถ๊ฐ๋ฅ
๋คํ์ฑ
- ์ฌ๋ฌ ๊ฐ์ง ํํ๋ฅผ ๊ฐ์ง ์ ์๋ ๋ฅ๋ ฅ
- ์๋ฐ์์๋ ํ ํ์ ์ ์ฐธ์กฐ๋ณ์๋ก ์ฌ๋ฌ ํ์ ์ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ ์ ์๋๋ก ํจ์ผ๋ก ์จ ๋คํ์ฑ์ ํ๋ก๊ทธ๋จ์ ์ผ๋ก ๊ตฌํํ์๋ค.
- ํ๋ณํ์ ์ฐธ์กฐ๋ณ์์ ํ์ ์ ๋ณํํ๋ ๊ฒ์ด์ง ์ธ์คํด์ค๋ฅผ ๋ณํํ๋ ๊ฒ์ ์๋๊ธฐ ๋๋ฌธ์ ์ฐธ์กฐ๋ณ์์ ํ๋ณํ์ ์ธ์คํด์ค์ ์๋ฌด๋ฐ ์ํฅ์ ๋ฏธ์น์ง ์๋๋ค. ๋จ์ง ์ฐธ์กฐ๋ณ์์ ํ๋ณํ์ ํตํด์, ์ฐธ์กฐํ๊ณ ์๋ ์ธ์คํด์ค์์ ์ฌ์ฉํ ์ ์๋ ๋ฉค๋ฒ์ ๋ฒ์(๊ฐ์)๋ฅผ ์กฐ์ ํ๋ ๊ฒ๋ฟ์ด๋ค.
- ์ฐธ์กฐ๋ณ์๊ฐ ๊ฐ๋ฆฌํค๋ ์ธ์คํด์ค์ ํ์ ์ด ๋ฌด์์ธ์ง ํ์ธํ๋ ๊ฒ์ด ์ค์ํ๋ค.
์ถ์ํด๋์ค
- ์ถ์๋ฉ์๋๋ฅผ ๋ชจ๋ ์ค๋ฒ๋ผ์ด๋ฉ ํ์ง ์์ ๊ฒฝ์ฐ ์์๋ฐ์ ์์ ํด๋์ค ์ญ์ ์ถ์ ํด๋์ค๋ก ์ง์ ๋์ด์ผ ํ๋ค.
์ธํฐํ์ด์ค
- ๋ชจ๋ ๋ฉค๋ฒ๋ณ์๋ ์์์ด๋ฉฐ ๋ชจ๋ ๋ฉ์๋๋ ์ถ์๋ฉ์๋ ํค์๋๋ ์๋ต ๊ฐ๋ฅ ์ปดํ์ผ๋ฌ๊ฐ ์์์ ์ง์ ํด์ค.
- ์์๋ณด๋ค๋ ๊ตฌํ์ด๋ผ๋ ๋ป์ ์ฌ์ฉํจ.
- ๋ค์ค์์์ด ๊ฐ๋ฅํ์ง๋ง ์ค์ ๋ก ๋ค์ค์์์ ๊ตฌํํ๋ ๊ฒฝ์ฐ๋ ๊ฑฐ์ ์๋ค.
- ๋ฆฌํดํ์ ์ด ์ธํฐํ์ด์ค๋ผ๋ ๊ฒ์ ๋ฉ์๋๊ฐ ํด๋น ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ํด๋์ค์ ์ธ์คํด์ค๋ฅผ ๋ฐํํ๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค.
- ํด๋์ค๋ฅผ ์ฌ์ฉํ๋ ์ชฝ๊ณผ ํด๋์ค๋ฅผ ์ ๊ณตํ๋ ์ชฝ์ด์๋ค. ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ ์ชฝ์์๋ ์ฌ์ฉํ๋ ค๋ ๋ฉ์๋์ ์ ์ธ๋ถ๋ง ์๋ฉด ๋๋ค. (๋ด์ฉ์ ๋ชฐ๋ผ๋ ๋จ)
โถ ํ์ด๋ ํ๋ก์ ํธ ๊ด๋ จ
1. ์นดํ ์ข์ ์์ฝ ์์คํ
2. ๋จ์ฒด์ท ์ฃผ๋ฌธ ์ ์ ์ฌ์ดํธ
3. ์จ๋ผ์ธ ๊ณต์ฐ ์๋งค ์ฌ์ดํธ
4. ๊ฐ๋ฐ์ ์ปค๋ฎค๋ํฐ ์ฌ์ดํธ
5. ํ์ฌ ์ ๋ณด (๊ด๋ฆฌ) ์์คํ
6. erp?
'๋ ๊ฑฐ์' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
2022.02.17์ ๊ธฐ๋ก (0) | 2022.02.17 |
---|---|
2022.02.16์ ๊ธฐ๋ก (0) | 2022.02.16 |
2022.02.14 (๊ฐ๋ ์ ๋ฆฌ) (0) | 2022.02.15 |
2022-02-14์ ๊ธฐ๋ก (0) | 2022.02.14 |
2022-02-13์ ๊ธฐ๋ก (0) | 2022.02.13 |