Design Pattern 정리

Seunghee LeeΒ·2023λ…„ 6μ›” 20일

CS μŠ€ν„°λ””

λͺ©λ‘ 보기
10/10

πŸ”Ž Design Pattern 이 λ­”κ°€μš” ?

Design Pattern 은 κΈ°μ‘΄ ν™˜κ²½ λ‚΄μ—μ„œ 반볡적으둜 μΌμ–΄λ‚˜λŠ” λ¬Έμ œλ“€μ„ μ–΄λ–»κ²Œ ν’€μ–΄λ‚˜κ°ˆ 것인가에 λŒ€ν•œ μ†”λ£¨μ…˜μ΄λ‹€.


πŸ”Ž MVC νŒ¨ν„΄μ΄ λ­”κ°€μš” ?

MVC λŠ” Model, View, Controller λ₯Ό κ΅¬μ„±μš”μ†Œλ‘œ κ°€μ§„λ‹€.

  • Model 은 λ°μ΄ν„°μ˜ ν˜•νƒœλ₯Ό μ •μ˜ν•˜κ³  μˆ˜μ •ν•˜λŠ” 역할을 ν•œλ‹€.
  • View λŠ” Model 을 UI 둜 ν‘œν˜„ν•˜κ³ , μ‚¬μš©μžμ˜ μž…λ ₯을 λ°›μ•„ Contoller 둜 μ „λ‹¬ν•œλ‹€.
  • Controller λŠ” μž…λ ₯받은 이벀트λ₯Ό μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 내에 μ–΄λ–»κ²Œ μ²˜λ¦¬ν• μ§€ νŒλ‹¨ν•˜κ³  κ°€κ³΅ν•˜κ³  Model λ˜λŠ” View λ₯Ό μ‘°μž‘ν•˜λŠ” 역할을 ν•œλ‹€.

πŸ”Ž MVC νŒ¨ν„΄μ—μ„œ λ°œμƒν•  수 μžˆλŠ” 문제점

MVC νŒ¨ν„΄μ€ 각 κ΅¬μ„±μš”μ†Œλ“€λΌλ¦¬ μ–‘λ°©ν–₯으둜 ν†΅μ‹ ν•˜κΈ° λ•Œλ¬Έμ— 연쇄적인 λ³€ν™”κ°€ λ°œμƒν•˜λ©΄ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ λ™μž‘ 흐름을 λΆ„μ„ν•˜κ±°λ‚˜ μ˜ˆμΈ‘ν•  수 μ—†λŠ” λ¬Έμ œκ°€ λ°œμƒν•  수 μžˆλ‹€.


πŸ”Ž Singleton Pattern 에 λŒ€ν•΄ μ„€λͺ…해봐

싱글톀(Singleton) νŒ¨ν„΄μ€ 였직 ν•œ 개의 μΈμŠ€ν„΄μŠ€λ§Œμ„ μƒμ„±ν•˜κ³ , 이λ₯Ό μ „μ—­μ μœΌλ‘œ μ ‘κ·Όν•  수 있게 ν•˜λŠ” νŒ¨ν„΄μ΄λ‹€.

  • 컀λ„₯μ…˜ ν’€, μŠ€λ ˆλ“œ ν’€ λ“±μ˜ 경우, μΈμŠ€ν„΄μŠ€λ₯Ό μ—¬λŸ¬ 개 λ§Œλ“€κ²Œ 되면 μžμ›μ„ λ‚­λΉ„ν•˜κ²Œ λ˜κ±°λ‚˜ 버그λ₯Ό λ°œμƒμ‹œν‚¬ 수 μžˆμœΌλ―€λ‘œ 였직 ν•˜λ‚˜λ§Œ μƒμ„±ν•˜κ³  κ·Έ μΈμŠ€ν„΄μŠ€λ₯Ό μ‚¬μš©ν•˜λ„λ‘ ν•˜λŠ” 것이 이 νŒ¨ν„΄μ˜ λͺ©μ μ΄λ‹€.
  • 이 νŒ¨ν„΄μ€ 클래슀의 μΈμŠ€ν„΄μŠ€ν™”λ₯Ό μ œν•œν•˜κ³ , μƒμ„±λœ μΈμŠ€ν„΄μŠ€μ— λŒ€ν•œ μΌκ΄€λœ 접근을 μ œκ³΅ν•œλ‹€.
  • 객체 μ§€ν–₯ 섀계 원칙 쀑 ν•˜λ‚˜μΈ 단일 μ±…μž„ 원칙 을 λ§Œμ‘±ν•˜κ³ , 전역적인 μƒνƒœλ₯Ό μ œμ–΄ν•  ν•„μš”κ°€ μžˆμ„ λ•Œ μœ μš©ν•˜κ²Œ μ‚¬μš©λ  수 μžˆλ‹€.
  • κ·ΈλŸ¬λ‚˜ κ³Όλ„ν•œ μ‚¬μš©μ€ μ½”λ“œμ˜ μœ μ—°μ„±μ„ μ €ν•˜μ‹œν‚¬ 수 μžˆμœΌλ―€λ‘œ, 상황에 맞좰 μ μ ˆν•˜κ²Œ μ‚¬μš©ν•˜λ„λ‘ ν•œλ‹€.

πŸ”Ž Singleton Pattern 은 μ–Έμ œ/μ–΄λ–»κ²Œ μ‚¬μš©ν•˜λ‚˜ ?

μ „μ—­ μƒνƒœλ₯Ό κ³΅μœ ν•˜κ±°λ‚˜ μœ μΌν•œ μΈμŠ€ν„΄μŠ€λ₯Ό μš”κ΅¬ν•˜λŠ” μƒν™©μ—μ„œ μœ μš©ν•˜κ²Œ μ‚¬μš©λœλ‹€.

βœ… 싱글톀 νŒ¨ν„΄ κ΅¬ν˜„μ€ λ‹€μŒκ³Ό κ°™λ‹€.

  • 클래슀의 μƒμ„±μžλ₯Ό private 으둜 μ„ μ–Έν•˜μ—¬ μ™ΈλΆ€μ—μ„œ μΈμŠ€ν„΄μŠ€λ₯Ό 직접 μƒμ„±ν•˜λŠ” 것을 λ§‰λŠ”λ‹€.
  • 클래슀 λ‚΄λΆ€μ—μ„œ μœ μΌν•œ μΈμŠ€ν„΄μŠ€λ₯Ό μƒμ„±ν•˜κ³  λ°˜ν™˜ν•˜λŠ” static method λ₯Ό κ΅¬ν˜„ν•œλ‹€. β†’ 이 λ©”μ„œλ“œλ₯Ό 톡해 싱글톀 μΈμŠ€ν„΄μŠ€μ— μ ‘κ·Όν•  수 μžˆλ‹€.
  • μΈμŠ€ν„΄μŠ€κ°€ ν•„μš”ν•œ μ‹œμ μ—μ„œ μƒμ„±λ˜λ„λ‘ μ§€μ—° μ΄ˆκΈ°ν™” (Lazy Initialzation) λ₯Ό κ΅¬ν˜„ν•œλ‹€.
  • λ©€ν‹° μŠ€λ ˆλ“œ ν™˜κ²½μ—μ„œ λ™μ‹œμ— μΈμŠ€ν„΄μŠ€λ₯Ό μƒμ„±ν•˜λŠ” 것을 λ°©μ§€ν•˜κΈ° μœ„ν•΄ 동기화λ₯Ό κ³ λ €ν•œλ‹€.
profile
μžλΌλ‚˜λΌ 개발개발 ~..β‚©

0개의 λŒ“κΈ€