λͺ©λ‘μ΄νŒ©ν‹°λΈŒμžλ°” (4)

DevLog 😢

[μ΄νŒ©ν‹°λΈŒμžλ°”] μ•„μ΄ν…œ 04. μΈμŠ€ν„΄μŠ€ν™”λ₯Ό λ§‰μœΌλ €λ©΄ private μƒμ„±μžλ₯Ό μ‚¬μš©ν•˜λΌ

πŸ’¬ μ΄νŒ©ν‹°λΈŒμžλ°” μ•„μ΄ν…œ 4을 읽고 μ •λ¦¬ν•œ κΈ€μž…λ‹ˆλ‹€. βœ”οΈ μœ ν‹Έλ¦¬ν‹° 클래슀 μΈμŠ€ν„΄μŠ€ λ©”μ„œλ“œμ™€ λ³€μˆ˜κ°€ 없이, 정적 λ©”μ„œλ“œμ™€ 정적 λ³€μˆ˜λ§Œ μ œκ³΅ν•˜λŠ” 클래슀λ₯Ό μ˜λ―Έν•œλ‹€. 개인적인 μ˜κ²¬μ΄μ§€λ§Œ, μœ ν‹Έλ¦¬ν‹° ν΄λž˜μŠ€λŠ” 객체지ν–₯적 κ΄€μ μ—μ„œ 봀을 λ•Œ μ’‹λ‹€κ³ λŠ” 보기 νž˜λ“€ 것 κ°™λ‹€. μžλ°”μ—μ„œ μ œκ³΅ν•˜λŠ” μœ ν‹Έλ¦¬ν‹° 클래슀 쀑에 λŒ€ν‘œμ μΈ 것듀을 λͺ‡ κ°€μ§€ μ‚΄νŽ΄λ³΄μž. public class Arrays { private Arrays() {} ... } μœ„ μ½”λ“œλŠ” java.util에 μ‘΄μž¬ν•˜λŠ” Arrays ν΄λž˜μŠ€μ΄λ‹€. 이 ν΄λž˜μŠ€λŠ” 배열을 μ‘°μž‘ν•˜κΈ° μœ„ν•΄ μ •λ ¬μ΄λ‚˜ 검색 등을 ν•  수 μžˆλŠ” λ‹€μ–‘ν•œ 정적 λ©”μ„œλ“œλ“€μ„ μ œκ³΅ν•œλ‹€. (λŒ€λΆ€λΆ„μ˜ λ©”μ„œλ“œλŠ” μ˜€λ²„λ‘œλ”©λ˜μ–΄ μžˆμ–΄μ„œ μ‹€μ œλ‘œ ν•˜λŠ” 역할은 검색, 볡사, μ±„μš°κΈ°, μ •λ ¬... 등등이 μžˆλ‹€) μœ ν‹Έλ¦¬ν‹° 클래슀둜 사..

πŸ“–/Effective Java 2023. 4. 6. 12:08
[μ΄νŒ©ν‹°λΈŒμžλ°”] μ•„μ΄ν…œ 03. private μƒμ„±μžλ‚˜ μ—΄κ±° νƒ€μž…μœΌλ‘œ μ‹±κΈ€ν„΄μž„μ„ λ³΄μ¦ν•˜λΌ

πŸ’¬ μ΄νŒ©ν‹°λΈŒμžλ°” μ•„μ΄ν…œ 3을 읽고 μ •λ¦¬ν•œ κΈ€μž…λ‹ˆλ‹€. βœ”οΈ μ‹±κΈ€ν„΄ μΈμŠ€ν„΄μŠ€ μΈμŠ€ν„΄μŠ€λ₯Ό 였직 ν•˜λ‚˜λ§Œ 생성할 수 μžˆλŠ” 클래슀. λ©”λͺ¨λ¦¬ λ‚­λΉ„λ₯Ό 쀄일 수 있고, 데이터λ₯Ό κ³΅μœ ν•  수 μžˆλ‹€. λ‹€λ§Œ, 결합도가 μ¦κ°€ν•˜λ©° ν΄λΌμ΄μ–ΈνŠΈμ˜ ν…ŒμŠ€νŠΈκ°€ μ–΄λ €μ›Œμ§ˆ 수 μžˆλ‹€λŠ” 점이 μ‘΄μž¬ν•œλ‹€. -> μΈμŠ€ν„΄μŠ€λ₯Ό κ΅¬ν˜„ν•΄μ„œ λ§Œλ“  싱글턴이 μ•„λ‹ˆλΌλ©΄, μ‹±κΈ€ν„΄ μΈμŠ€ν„΄μŠ€λ₯Ό mock 객체둜 λŒ€μ²΄ν•˜κΈ°κ°€ νž˜λ“€κΈ° λ•Œλ¬Έμ΄λ‹€. πŸ’¬ μƒμ„±ν•˜λŠ” 방법 1. μƒμ„±μžλ₯Ό λͺ¨λ‘ private둜 λ§Œλ“€κ³ , μΈμŠ€ν„΄μŠ€μ˜ μœ μΌν•œ μ ‘κ·Όμžλ₯Ό public static으둜 μƒμ„±ν•˜κΈ° public class Crew { public static final Crew INSTANCE = new Crew(); private Crew() { ... } public void hello() {...} }..

πŸ“–/Effective Java 2023. 4. 4. 23:29
[μ΄νŒ©ν‹°λΈŒμžλ°”] μ•„μ΄ν…œ 78. 곡유 쀑인 κ°€λ³€ λ°μ΄ν„°λŠ” 동기화해 μ‚¬μš©ν•˜λΌ (1)

πŸ’¬ μ΄νŒ©ν‹°λΈŒμžλ°” μ•„μ΄ν…œ 78을 읽고 μ •λ¦¬ν•œ κΈ€μž…λ‹ˆλ‹€. 이번 μ •λ¦¬λŠ” μ±…κ³ΌλŠ” λ‹€μ†Œ λ‹€λ₯Έ λ‚΄μš©μž…λ‹ˆλ‹€ :D κ°œλ… μžμ²΄κ°€ μ–΄λ €μš΄ λΆ€λΆ„μ΄μ–΄μ„œ 책을 읽으며 κΆκΈˆν•œ 뢀뢄에 λŒ€ν•΄ μ‘°μ‚¬ν•˜λŠ” μ‹μœΌλ‘œ μž‘μ„±ν•˜μ˜€μŠ΅λ‹ˆλ‹€ πŸ™‡‍♀️ 두 편으둜 λ‚˜λˆ„μ–΄μ„œ ν¬μŠ€νŒ… ν•  μ˜ˆμ •μž…λ‹ˆλ‹€! 아직 λ―Έν‘ν•œ 점이 λ§Žμ•„μ„œ, 더 μ •ν™•ν•œ 정보λ₯Ό μ•Œκ²Œ 되면 λ³Έ κ²Œμ‹œκΈ€μ„ μˆ˜μ •ν•  μ˜ˆμ •μž…λ‹ˆλ‹€. βœ”οΈ λ™κΈ°ν™”λž€ λ¬΄μ—‡μΌκΉŒ? ν˜„μž¬ μž”μ•‘μ΄ 10000원이고, 각각 1000원씩 μž…κΈˆν•˜λŠ” ν–‰μœ„λ₯Ό 5000번, 1000원씩 μΆœκΈˆν•˜λŠ” ν–‰μœ„λ₯Ό 5000번 λ°˜λ³΅ν•œλ‹€κ³  κ°€μ •ν•΄λ³΄μž. λ™μΌν•œ κΈˆμ•‘μ— λŒ€ν•΄ λ™μΌν•œ 횟수둜 5000λ²ˆμ”© μ§„ν–‰ν–ˆκΈ° λ•Œλ¬Έμ—, 우리의 μž”μ•‘μ—λŠ” λ³€ν™”κ°€ μ—†λ‹€κ³  생각할 수 μžˆλ‹€. [synchronized ν‚€μ›Œλ“œ 뢙이기 μ „] public class Main { public stati..

πŸ“–/Effective Java 2023. 3. 26. 21:24
[μ΄νŒ©ν‹°λΈŒμžλ°”] μ•„μ΄ν…œ 01. μƒμ„±μž λŒ€μ‹  정적 νŒ©ν„°λ¦¬ λ©”μ„œλ“œλ₯Ό κ³ λ €ν•˜λΌ

πŸ’¬ μ΄νŒ©ν‹°λΈŒμžλ°” 챕터 1을 읽고 μ •λ¦¬ν•œ κΈ€μž…λ‹ˆλ‹€. βœ”οΈ 정적 νŒ©ν„°λ¦¬ λ©”μ„œλ“œλž€? μš°ν…Œμ½” λ―Έμ…˜μ„ μ§„ν–‰ν•˜λ©΄μ„œ, 정적 νŒ©ν„°λ¦¬ λ©”μ„œλ“œλ₯Ό 정말 많이 μ‚¬μš©ν•˜μ˜€λ‹€. 정적 νŒ©ν„°λ¦¬ λ©”μ„œλ“œλž€, 클래슀의 μΈμŠ€ν„΄μŠ€λ₯Ό λ°˜ν™˜ν•˜λŠ” 정적 λ©”μ„œλ“œμ΄λ‹€. 즉, μƒμ„±μž 역할을 ν•˜λ©΄μ„œλ„ 객체λ₯Ό μƒμ„±ν•˜κΈ° 전에 1차적으둜 ν†΅κ³Όν•˜λŠ” 'λ¬Έ' 같은 μ‘΄μž¬λΌκ³ λ„ λ³Ό 수 μžˆλ‹€. 정적 νŒ©ν„°λ¦¬ λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜λ©΄ μ–΄λ–€ 점이 μ’‹μ„κΉŒ? πŸ’¬ λ™μΌν•œ μ‹œκ·Έλ‹ˆμ²˜λΌλ„, 이름에 따라 μƒˆλ‘­κ²Œ 생성해쀄 수 μžˆλ‹€. μ–΄λŠ λ‚ , μš°ν…Œμ½”μ— 크루 신청을 ν•˜κΈ° μœ„ν•΄ μ‹ μ²­μ„œλ₯Ό μž‘μ„±ν•˜κ³  μžˆμ—ˆλ‹€. μ΄λ•Œ, λ‹‰λ„€μž„μ„ 아직 μ •ν•˜μ§€ λͺ»ν•œ ν¬λ£¨λŠ” 이름과 λ‚˜μ΄, 그리고 κ³Όμ •λ§Œμ„ κ°€μ§€κ³  크루λ₯Ό μ‹ μ²­ν•˜κ³  μ‹Άμ—ˆλ‹€. public class Crew { private String name; private Strin..

πŸ“–/Effective Java 2023. 2. 28. 00:44