μƒˆμ†Œμ‹

λ°˜μ‘ν˜•
Spring

μš°μ•„ν•œ 객체지ν–₯ [μš°μ•„ν•œν…Œν¬μ„Έλ―Έλ‚˜] 정리 1

  • -
λ°˜μ‘ν˜•

πŸ˜Šκ°œμš”

ν•œμ°½ ν”„λ‘œμ νŠΈλ₯Ό ν•˜λ©° μŠ€ν”„λ§κ³Ό 객체지ν–₯을 μ ‘ν•˜κ³  ν™œμš© ν–ˆμ„ λ•Œ, μ˜μ‘΄μ„±μ— κ΄€ν•œ 고민을 맀우 많이 ν–ˆμ—ˆλ‹€. 그러던 도쀑 μœ νŠœλΈŒμ—μ„œ μš°μ•„ν•œ 객체지ν–₯ by μ‘°μ˜ν˜Έλ‹˜μ˜ μ„Έλ―Έλ‚˜λ₯Ό λ“£κ³ , κ·Έλ™μ•ˆ ν”„λ‘œμ νŠΈλ₯Ό μ§„ν–‰ν•˜λ©΄μ„œ μ΄κ²Œλ§žλ‚˜? 라고 μƒκ°ν–ˆλ˜ μ‹€νƒ€λž˜λ“€μ΄ ν•˜λ‚˜ν•˜λ‚˜ ν’€λ¦¬κ²Œ λ˜λ©΄μ„œ μž…μ„ 벌린 μƒνƒœλ‘œ 보며 μ •λ¦¬ν–ˆμ—ˆλ˜ 적이 μžˆλ‹€. κ·Έλ•Œμ˜ λ‚΄μš©μ„ κ³±μ”ΉμœΌλ©΄μ„œ λ‹€μ‹œ 정리 ν•΄λ³΄μžκ³  μƒκ°ν–ˆλ‹€.

 

πŸŽˆμ˜μ‘΄μ„±μ„ μ΄μš©ν•΄ 섀계 μ§„ν™”μ‹œν‚€κΈ°

섀계

→ μ½”λ“œλ₯Ό μ–΄λ–»κ²Œ λ°°μΉ˜ν•  것인가?

→ 핡심은 변경에 μ΄ˆμ μ„ λ§žμΆ˜λ‹€. κ°™μ΄λ³€κ²½λ˜λŠ” μ½”λ“œλ₯Ό 같이 λ„£κ³  λ³€κ²½λ˜μ§€ μ•ŠλŠ”μ½”λ“œλ₯Ό λ”°λ‘œ λ„£μ–΄μ•Ό ν•œλ‹€.

μ˜μ‘΄μ„±

μ˜μ‘΄μ„±μ΄ μžˆλ‹€λΌλŠ” 것은 μœ„μ˜ κ·Έλ¦Όμ—μ„œ Bκ°€ 변경될 λ•Œ A도 ν•¨κ»˜ 변경될 κ°€λŠ₯성이 μžˆλŠ” 것을 λ§ν•œλ‹€. ν•˜μ§€λ§Œ κΌ­ 영ν–₯을 μ£ΌλŠ” 것이 μ•„λ‹ˆλΌ κ°€λŠ₯성이 μžˆλŠ” 것을 λ§ν•œλ‹€.

 

🎈클래슀 μ˜μ‘΄μ„±

μ—°κ΄€ 관계(영ꡬ적)

class A{
	private B b;
}

의쑴 관계(μΌμ‹œμ )

class A{
	public B method(B b){
		return new B();
	}	
}

상속관계

class A extends B{
}

싀체화관계

class A implements B{
}

 

πŸŽˆνŒ¨ν‚€μ§€ μ˜μ‘΄μ„±

μ–΄λ–€ νŒ¨ν‚€μ§€ 내에 μžˆλŠ” ν΄λž˜μŠ€κ°€ λ‹€λ₯Έ νŒ¨ν‚€μ§€μ— μžˆλŠ” ν΄λž˜μŠ€μ— μ˜μ‘΄μ„±μ΄ 있으면 κ·Έ νŒ¨ν‚€μ§€κ°„μ— μ˜μ‘΄μ„±μ΄ μžˆλ‹€κ³  ν‘œν˜„ν•œλ‹€.

 

πŸŽˆμ’‹μ€ μ˜μ‘΄μ„±κ΄€λ¦¬λ₯Ό μœ„ν•œ κ·œμΉ™

  1. μ–‘λ°©ν–₯ μ˜μ‘΄μ„±μ„ 피해라
    1. Aκ°€ λ°”λ€”λ•Œ, B도 λ°”λ€Œκ³ , Bκ°€ λ°”λ€”λ•Œ A도 바뀐닀.
    2. 더 μ•ˆμ’‹μ€κ±΄ A와 Bμƒνƒœλ₯Ό 항상 λ™κΈ°ν™”μ‹œμΌœμ€˜μ•Όν•œλ‹€.(μ„±λŠ₯ 이슈)
  2. 닀쀑성이 적은 λ°©ν–₯을 μ„ νƒν•˜λΌ
    1. μ„±λŠ₯이슈, κ°μ²΄λ“€μ˜ 관계λ₯Ό μœ μ§€ν•˜κΈ°μœ„ν•΄ λ§Žμ€ λ…Έλ ₯듀이 ν•„μš”ν•˜λ‹€.
  3. μ˜μ‘΄μ„±μ΄ μ—†μ„μ‹œμ— μ œκ±°ν•˜λΌ
  4. νŒ¨ν‚€μ§€ μ‚¬μ΄μ˜ μ˜μ‘΄μ„± 사이클을 μ œκ±°ν•˜λΌ

*μ„€κ³„μ—μ„œ κ°€μž₯ μ€‘μš”ν•œκ±΄ λ³€κ²½

 

μ°Έκ³ μ˜μƒ

 

λ°˜μ‘ν˜•
Contents

ν¬μŠ€νŒ… μ£Όμ†Œλ₯Ό λ³΅μ‚¬ν–ˆμŠ΅λ‹ˆλ‹€

이 글이 도움이 λ˜μ—ˆλ‹€λ©΄ 곡감 λΆ€νƒλ“œλ¦½λ‹ˆλ‹€.