๊ฐ์ฒด์งํฅ ์ค๊ณ 5์์น SOLID 1. ๋จ์ผ์ฑ ์์์น (SRP) ๊ฐ์ฒด ์งํฅ ์์น ์ค๊ณ์ 5์์น์ 1. SRP : ๋จ์ผ ์ฑ ์ ์์น2. OCP : ๊ฐ๋ฐฉ ํ์ ์์น3. LSP : ๋ฆฌ์ค์ฝํ ์นํ ์์น4. ISP : ์ธํฐํ์ด์ค ๋ถ๋ฆฌ ์์น5. DIP : ์์กด ์ญ์ ์์น ์ด ์๋ค.๊ทธ ์ค ์ฒซ๋ฒ์งธ ์์น, SRP์ ๋ํด ์์๋ณด๊ฒ ๋ค.๋จ์ผ์ฑ ์์์น (SRP : SingleResponsibilityPrinciple)ํด๋์ค๋ฅผ ๋ณ๊ฒฝํ๋ ์ด์ ๊ฐ ๋จ ํ๊ฐ์ง ์ฌ์ผ ํ๋ค. ๋จ์ผ ์ฑ ์ ์์น์ SRP, Single Responsibility Principle ์ฆ, ๋จ์ผ ์ฑ ์์์น์ด๋ค. ๊ฐ์ฒด์งํฅ์์ ์ง์ผ์ผ ํ ์์น ์ค ํ๋์ด๋ฉฐ, ํ๋์ ํด๋์ค๊ฐ ํ๋์ ์ฑ ์๋ง์ ๊ฐ์ง๊ณ ์์ด์ผ ํ๋ค. ๋ผ๋ ๊ฒ์ด๋ค. ํ์ง๋ง ์ธ๋ป ๋ณด๋ฉด ํ๋์ ํด๋์ค๊ฐ ํ๋์ ์ญํ ๋ง์ ํด์ผ ํ๋ค ๋ผ๋ ๋ป์ผ๋ก ์คํดํ ์ ์๋ค. ์ด๋ฐ ์๋ฏธ๊ฐ ์๋.. [Java] ๋ณ๋ ฌ ๋ฐ์ดํฐ ์ฒ๋ฆฌ "๋ณ๋ ฌ ์คํธ๋ฆผ" "๋ณ๋ ฌ ์คํธ๋ฆผ" ์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ๋ณ๋ ฌํํ์ฌ ์ฑ๋ฅ์ ํฅ์ ์ํฌ ์ ์๋ ๊ธฐ๋ฅ์ด๋ค.๋ณ๋ ฌ ์คํธ๋ฆผ์ ์คํธ๋ฆผ API์ ํ ์ข ๋ฅ๋ก,๋ฐ์ดํฐ ์ฒ๋ฆฌ ์์ ์ ๋ณ๋ ฌ์ ์ผ๋ก ์ฒ๋ฆฌํ๋๋ฐ ์ฌ์ฉ๋๋ ๊ธฐ๋ฅ์ด๋ค. ์ฆ, ์คํธ๋ฆผ์ ์์๋ค์ ๋ณ๋ ฌ์ ์ผ๋ก ์ฒ๋ฆฌํจ์ผ๋ก์จ ๋ค์ค์ฝ์ด(CPU ์ฝ์ด) ์์คํ ์์ ๋ณ๋ ฌ ์ฒ๋ฆฌ ์ฑ๋ฅ์ ๊ทน๋ํํ ์ ์๋ค. ๋๋์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ๋ ํนํ ์ ์ฉํ๋ฉฐ, ๋ณ๋ ฌ ์ฒ๋ฆฌ๋ฅผ ํ์ฉํ๋ฉด ๋จ์ผ ์ค๋ ๋ ์ฒ๋ฆฌ๋ณด๋ค ํจ์ฌ ๋น ๋ฅธ ์๋๋ก ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ค. ๋ณ๋ ฌ ์คํธ๋ฆผ์ ๋ด๋ถ์ ์ผ๋ก Fork/Join ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ์ฌ ์๋ํ๋ค. Fork/Join ํ๋ ์์ํฌ๋ ์์ ์ ์์ ์์ ๋ค๋ก ๋ถํ ํ๊ณ , ์ด๋ฅผ ๋ณ๋ ฌ๋ก ์ฒ๋ฆฌํ ํ ๊ฒฐ๊ณผ๋ฅผ ํฉ์น๋ ๋ฐฉ์์ผ๋ก ๋์ํ๋ค. ์ด๋ฌํ ๋ฐฉ์์ผ๋ก ๋ณ๋ ฌ ์คํธ๋ฆผ์ ์์ ์ ๋ ์์ ์์ ๋จ์๋ก ๋๋์ด ๋ฉํฐ์ฝ์ด ํ๋ก์ธ์์์.. [Java] hashCode()์ equals()๋? Java๋ฅผ ๊ณต๋ถํ๋ค๋ณด๋ฉด, ํ๋ก๊ทธ๋๋ฐ ์ 'hashCode()' ์ 'equals()' ๋ฉ์๋์ ๋ํด ๋ง์ด ์ ํ๊ฒ ๋๋ค. ์ด ๋ฉ์๋๋ค์ ๊ฐ์ฒด์ ๋๋ฑ์ฑ ๋น๊ต์ ํด์ ๋งต(HashMap) ๋ฑ์ ์๋ฃ ๊ตฌ์กฐ์์ ํจ์จ์ ์ธ ๊ฒ์์ ์ํด ์ฌ์ฉ๋๋ ์ค์ํ ๋ฉ์๋์ด๋ค. ์ด๋ฒ ๊ธ์์๋ hashCode()์ equals() ๋ฉ์๋์ ๋ํด ์์ธํ๊ฒ ์ ๋ฆฌํด๋ณด๋ ค๊ณ ํ๋ค. hashCode() Method hashCode() ๋ฉ์๋๋ ๊ฐ์ฒด์ ํด์์ฝ๋๋ฅผ ๋ฐํํ๋ ๋ฉ์๋์ด๋ค. ๋จผ์ , ํด์์ฝ๋๋ ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ฒ ์ ์ฅํ๊ณ ๊ฒ์ํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ์์์ ๊ธธ์ด์ ๊ณ ์ ๋ ํฌ๊ธฐ์ ๊ฐ์ด๋ค. ์ด๋ hashCode() ๋ฉ์๋๋ฅผ ํตํด ๊ฐ์ฒด์ ํด์์ฝ๋๋ฅผ ์ป์ ์ ์๋ค. ์ผ๋ฐ์ ์ผ๋ก hashCode() ๋ฉ์๋๋ ๊ฐ์ฒด์ ํ๋๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํด์ ์ฝ๋๋ฅผ ์์ฑํ๋ฉฐ, ์ฃผ์.. [Java] '๊น์ ๋ณต์ฌ'์ '์์ ๋ณต์ฌ'๋? ์ค๋ ์ ๋ฆฌํ ๋ด์ฉ์ ์๋ฐ์์์ ๊น์ ๋ณต์ฌ ์ ์์ ๋ณต์ฌ์ด๋ค. ๋ฐฐ์ด์ด๋ ๊ฐ์ฒด๋ฅผ ๋ณต์ฌํด์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋ฐ์ํ ์ ์๋๋ฐ, ์ด๋ JAVA์์ ๊น์ ๋ณต์ฌ์ ์์ ๋ณต์ฌ์ ๋ํด ๋ฐฐ์ ์๋ค. ์ด ์ฐจ์ด์ ์ ๋ช ํํ ํด์ผ ํท๊ฐ๋ฆฌ์ง ์๊ธฐ ๋๋ฌธ์ ์ ๋ฆฌํด๋๊ณ ์ ํ๋ค. Deep Copy vs Shallow Copy ๊น์๋ณต์ฌ (Deep Copy) : '์ค์ ๊ฐ'์ ์๋ก์ด ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๋ณต์ฌํ๋ค. (ํ ์์ญ) ์์๋ณต์ฌ (Shallow Copy) : '์ฃผ์ ๊ฐ'์ ๋ณต์ฌํ๋ค. (์คํ์์ญ) ์ฌ์ค์, ์ด๋ ๊ฒ๋ง ์ค๋ช ํ๊ฒ ๋๋ฉด.. ์ดํด๋ฅผ ๋ชปํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค. ๋ฐ๋ผ์ ์๋ฅผ ๋ค์ด ์ค๋ช ํด๋ณด์ ์์๋ณต์ฌ(Shallow Copy) class Person { private String name; private int age; public Person(S.. [Java] Java8, Java11, Java17์ ์ฐจ์ด ๋ฐ ๊ธฐ๋ฅ Java8, Java11, Java17 ์๋ง์ ๋ฒ์ ๋ค์ด ์๋ค๊ณ ์ด์ผ๊ธฐ ํ์ง๋ง, ์ด ๋ฒ์ ๋ค์ ๋ํด์ ์ด๊ฒ ๋ฌด์์ด๊ณ ์ด๋ค ์ฐจ์ด๊ฐ ์๋์ง๋ ์ ๋ชฐ๋ผ์ ์ ๋ฆฌํด๋ณด์๋ค. Java8, Java11, Java17 ์ด๊ฒ๋ค์ ์ค๋ผํด(Oracle)์ด๋ ๋ค๋ฅธ ๊ฐ๋ฐ์ ๋ฐ ์ปค๋ฎค๋ํฐ์ ์ํด ๊ฐ๋ฐ๋ ์๋ฐ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ์ฌ๋ฌ ๋ฒ์ ์ ๋งํ๋ค. ์ด๋ฌํ ๋ฒ์ ๋ค์ ์๋ฐ ํ๋ซํผ์ ์ฃผ์ ์ ๋ฐ์ดํธ์ด๋ฉฐ, ๊ฐ๊ฐ ์๋ก์ด ๊ธฐ๋ฅ๊ณผ ๊ฐ์ ์ฌํญ์ด ํฌํจ๋์ด ์๋ค. Java 8 1. ๋๋ค ํํ์(Lambda Expressions) : ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ ์ง์ํ๊ธฐ ์ํด ๋๋ค ํํ์์ด ๋์ ๋์๋ค. ๋๋ค ํํ์์ ํตํด ์ฝ๋๋ฅผ ๊ฐ๊ฒฐํ๊ฒ ์์ฑํ๊ณ ๋ณ๋ ฌ ์ฒ๋ฆฌ๋ฅผ ์ฉ์ดํ๊ฒ ํ ์ ์๋ค. 2. ์คํธ๋ฆผ API(Stream API) : ์ปฌ๋ ์ ์ฒ๋ฆฌ๋ฅผ ์ํ ์๋ก์ด API๋ก, ๋ณ๋ ฌ์ฒ.. ์ด์ 1 ๋ค์