λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
πŸ–₯DEV/Java || Spring

private μƒμ„±μž μ˜¬λ°”λ₯΄κ²Œ μ‚¬μš©ν•˜κΈ°

by bdd 2022. 7. 17.

ν”„λ‘œμ νŠΈλ₯Ό μ§„ν–‰ν•˜λ©° private μƒμ„±μžλ₯Ό μ˜¬λ°”λ₯΄κ²Œ μ‚¬μš©ν•˜κΈ° μœ„ν•΄ μ΄νŽ™ν‹°λΈŒ μžλ°” μ•„μ΄ν…œ4λ₯Ό 읽고 좔가적인 λ‚΄μš©μ„ λ³΄κ°•ν–ˆμŠ΅λ‹ˆλ‹€. ν•™μŠ΅ κ³Όμ •μ—μ„œ μž‘μ„±λ˜μ—ˆκΈ° λ•Œλ¬Έμ— 잘λͺ»λœ λ‚΄μš©μ΄ μžˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€. 

 

 

      - μΈμŠ€ν„΄μŠ€ν™” 방지(feat. μ˜¬λ°”λ₯Έ private μƒμ„±μž μ‚¬μš©λ²•)

      - μœ ν‹Έ ν΄λž˜μŠ€μ™€ 객체지ν–₯

      - Conclusion

 

 

 

 

1. μΈμŠ€ν„΄μŠ€ν™” 방지


λͺ¨λ“  ν΄λž˜μŠ€λ“€μ΄ μΈμŠ€ν„΄μŠ€ν™”κ°€ ν•„μš”ν•œ 것은 μ•„λ‹ˆκΈ° λ•Œλ¬Έμ— 상황에 따라 private μƒμ„±μžλ₯Ό λ§Œλ“œλŠ”λ°μš”, 이λ₯Ό μ˜¬λ°”λ₯΄κ²Œ μ‚¬μš©ν•˜λŠ” 방법에 λŒ€ν•΄ μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€. private μƒμ„±μžλ₯Ό μ‚¬μš©ν•˜λ©΄ μ–΄λŠμ •λ„ μΈμŠ€ν„΄μŠ€ν™”λ₯Ό 방지할 μˆ˜λŠ” μžˆμ§€λ§Œ 좔상 클래슀λ₯Ό λ§Œλ“€κ±°λ‚˜ λ¦¬ν”Œλ ‰μ…˜μ„ 톡해 μΈμŠ€ν„΄μŠ€ν™”λ₯Ό ν•  수 있기 λ•Œλ¬Έμ— 쑰심해야 ν•©λ‹ˆλ‹€.

 

 

μ•„λž˜μ™€ 같이 μΆ”μƒν΄λž˜μŠ€λ₯Ό μ •μ˜ν•˜κ³  μœ ν‹Έ λ©”μ„œλ“œλ₯Ό λ§Œλ“€λ©΄ μΈμŠ€ν„΄μŠ€ν™”ν•˜μ§€ λͺ»ν•˜κΈ° λ•Œλ¬Έμ— μ•ˆμ „ν•΄λ³΄μ΄μ§€λ§Œ ν•˜μœ„ νƒ€μž…μ„ λ§Œλ“€μ–΄ μΈμŠ€ν„΄μŠ€ν™” ν•˜λ©΄ 그만이기 λ•Œλ¬Έμ— 쑰심해야 ν•©λ‹ˆλ‹€. 뿐만 μ•„λ‹ˆλΌ λ¦¬ν”Œλ ‰μ…˜μ„ 톡해 private μƒμ„±μžλ₯Ό 생성할 μˆ˜λ„ 있기 λ•Œλ¬Έμ— 좔가적인 μž‘μ—…μ΄ ν•„μš”ν•©λ‹ˆλ‹€. 

 

 

 

 

 

 

이λ₯Ό μœ„ν•΄μ„œλŠ” μ•„λž˜μ™€ 같이 private μƒμ„±μžλ₯Ό λ§Œλ“€κ³  κ·Έ 내뢀에 μ˜ˆμ™Έλ₯Ό μ„ μ–Έν•΄μ£Όλ©΄ λ˜λŠ”λ°μš”, 이λ₯Ό 톡해 μ‹€μˆ˜λ‘œ μΈμŠ€ν„΄μŠ€κ°€ μƒμ„±λ˜λŠ” 것을 방지할 수 μžˆμŠ΅λ‹ˆλ‹€. 뿐만 μ•„λ‹ˆλΌ μƒμ„±μžμ— μ£Όμ„κΉŒμ§€ 남길 경우 ν•΄λ‹Ή 클래슀λ₯Ό μΈμŠ€ν„΄μŠ€ν™” ν•˜μ§€ 말 것을 λͺ…μ‹œμ μœΌλ‘œ 전달할 μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.

 

 

 

 

 

 

 

 

뿐만 μ•„λ‹ˆλΌ μƒμœ„ νƒ€μž…μ˜ λ©”μ„œλ“œκ°€ μ‘΄μž¬ν•˜μ§€λ§Œ ν•˜μœ„νƒ€μž…μ—μ„œ ν•΄λ‹Ή λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•  수 μ—†κ²Œ λ§Œλ“€κ³  μ‹Άλ‹€λ©΄ μ•„λž˜μ™€ 같이 λ©”μ„œλ“œμ— μ˜ˆμ™Έλ₯Ό 던질 μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. 

 

 

 

 

 

 

 

2. μœ ν‹Έ ν΄λž˜μŠ€μ™€ 객체지ν–₯


μœ ν‹Έ 클래슀λ₯Ό λ§Œλ“€κΈ° μœ„ν•΄μ„œλ„ μƒμ„±μžλ₯Ό private으둜 λ§Œλ“€μ–΄μ•Ό ν•˜λŠ”λ° 쑰금 더 λ‚˜μ•„κ°€ μœ ν‹Έ ν΄λž˜μŠ€λŠ” 객체지ν–₯적인지에 λŒ€ν•΄ ν•œ 번 μ΄μ•ΌκΈ°ν•΄λ³΄κ³ μž ν•©λ‹ˆλ‹€. μš°μ„  "μœ ν‹Έ ν΄λž˜μŠ€λŠ” 객체지ν–₯적이지 μ•Šλ‹€?" 에 λŒ€ν•΄μ„œλŠ” 각자 의견이 갈릴 수 μžˆλŠ”λ°μš”, κ°œμΈμ μœΌλ‘œλŠ” "μœ ν‹Έ ν΄λž˜μŠ€λŠ” 객체지ν–₯적이지 μ•Šμ§€λ§Œ ν˜„μ‹€μ μΈ κ°œλ°œμ„ μœ„ν•΄ μ‚¬μš©ν•  수 μžˆλ‹€" 라고 μƒκ°ν•©λ‹ˆλ‹€.

 

 

μŠ€ν”„λ§μ—μ„œλ„ 싱글톀을 톡해 ν•΄λ‹Ή ν΄λž˜μŠ€κ°€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— ν•˜λ‚˜λ§Œ μ‘΄μž¬ν•˜κ³  μƒνƒœλ₯Ό 가지지 μ•Šλ„λ‘ ν•˜λŠ” κ²ƒμ²˜λŸΌ νš¨μœ¨μ„±μ„ ν•„μš”λ‘œ ν•˜λŠ” κ²½μš°μ—λŠ” μœ ν‹Έ 클래슀λ₯Ό μ‚¬μš©ν•  μˆ˜λ„ μžˆλ‹€κ³  μƒκ°λ˜κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€. **λ¬Όλ‘  μ—„λ°€νžˆ λ§ν•˜λ©΄ μ‹±κΈ€ν†€μ˜ 경우 ν•œ ν΄λž˜μŠ€κ°€ μžμ‹ κ³Ό κ΄€λ ¨λœ ν–‰μœ„λ₯Ό ν•˜κΈ° λ•Œλ¬Έμ— κ΄‘λ²”μœ„ν•œ 역할을 ν•˜λŠ” μœ ν‹Έ ν΄λž˜μŠ€μ™€λŠ” 쑰금 λ‹€λ¦…λ‹ˆλ‹€. 

 

 

 

 

 

 

이에 κ΄€ν•΄ 곡감됐던 쒋은 글을 ν•˜λ‚˜ 보게 λλŠ”λ°μš”, μ½”λ“œλ¦¬λ·° κ³Όμ •μ—μ„œ μœ ν‹Έ ν΄λž˜μŠ€μ— λŒ€ν•΄ 생각을 적어주신 뢄이 κ³„μ…¨μŠ΅λ‹ˆλ‹€. 많이 곡감되고 λ„ˆλ¬΄ λ…Όλ¦¬μ •μ—°ν•˜κ²Œ 잘 μ μ–΄μ£Όμ…”μ„œ κ³΅μœ ν•΄λ΄…λ‹ˆλ‹€. 

 

 

 

 

 

3. Conclusion


private μƒμ„±μžλ₯Ό μ‚¬μš©ν•˜λŠ” μ΄μœ λŠ” λͺ¨λ“  ν΄λž˜μŠ€κ°€ μΈμŠ€ν„΄μŠ€ν™”κ°€ ν•„μš”ν•œ 것은 μ•„λ‹ˆκΈ° λ•Œλ¬Έμ— μ‚¬μš©ν•©λ‹ˆλ‹€. 이λ₯Ό μ˜¬λ°”λ₯΄κ²Œ μ‚¬μš©ν•˜κΈ° μœ„ν•΄μ„œλŠ” private μƒμ„±μžλ₯Ό λ§Œλ“€κ³  κ·Έ 내뢀에 μ˜ˆμ™Έλ₯Ό μ •μ˜ν•΄μ€˜μ„œ ν˜Ήμ‹œλΌλ„ λͺ¨λ₯Ό μΈμŠ€ν„΄μŠ€ν™”λ₯Ό 방지해야 ν•©λ‹ˆλ‹€. λ§Œμ•½ μœ ν‹Έ 클래슀라면 좔상 클래슀λ₯Ό μ‚¬μš©ν•˜λŠ” 것은 μœ„ν—˜ν•˜κ³ , 더 이상 ν•˜μœ„ μΈμŠ€ν„΄μŠ€λ₯Ό μƒμ„±ν•˜μ§€ λͺ»ν•˜λ„둝 final ν‚€μ›Œλ“œλ₯Ό μ •μ˜ν•΄μ£ΌλŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€. 

 

 

'πŸ–₯DEV > Java || Spring' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

FrontController νŒ¨ν„΄  (0) 2022.07.21
@Embedded와 κ°’ 객체  (0) 2022.07.17
@Embedded와 κΈ°λ³Έ μƒμ„±μž  (0) 2022.07.14
λΈŒλ¦Ώμ§€ νŒ¨ν„΄  (0) 2022.07.10
싱글톀과 문제점  (0) 2022.07.10

λŒ“κΈ€