Skip to content

🧼 슬기둭고 싢은 클린 μ•„ν‚€ν…μ²˜ μŠ€ν„°λ””

Notifications You must be signed in to change notification settings

hoyahozz/Clean-Architecture-Study

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

40 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🧼 Clean-Architecture-Study

  • λ‘œλ²„νŠΈ C.λ§ˆν‹΄ (Uncle Bob) 의 β€œThe Clean Architecture” λΌλŠ” μ΄λ¦„μ˜ κΈ€λ‘œ 12λ…„ 8μ›” 13일에 처음 세상에 λͺ¨μŠ΅μ„ λ“œλŸ¬λƒˆλ‹€.
  • μ΅œμ’… λͺ©μ μ€ 계측을 λΆ„λ¦¬ν•˜μ—¬ 관심사λ₯Ό μ™„μ „νžˆ λΆ„λ¦¬ν•˜λŠ” 것에 μžˆλ‹€.

μƒκ°ν•΄λ³΄μž

  • μ™œ μ΄λ ‡κ²Œλ‚˜ λ§Žμ€ ν”„λ‘œκ·Έλž˜λ° 언어와 ν”„λ ˆμž„μ›Œν¬κ°€ μžˆλŠ”κ±°μ§€?
  • λˆ„κ΅¬μ—κ²Œ κ³ μˆ˜μ€€ ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄κ°€ ν•„μš”ν•˜μ§€?
  • κΈ°κ³„λŠ” μ €μˆ˜μ€€ μ–΄μ…ˆλΈ”λ¦¬ 보닀 κ³ μˆ˜μ€€ μ–Έμ–΄λ₯Ό μ„ ν˜Έν•˜λ‚˜?
  • λ‹Ήμ‹ μ˜ ν”„λ‘œμ νŠΈμ—μ„œ 정말 μž‘μ€ μˆ˜μ •μΈλ° 두렀움을 κ°€μ‘Œλ˜ 적이 μžˆλŠ”κ°€?
  • 당신이 μž‘μ„±ν•œ μ‹œκ°„μ΄ μ’€ μ§€λ‚œ μ½”λ“œλ₯Ό λ‹€μ‹œ μ΄ν•΄ν•˜κΈ° μœ„ν•΄ μ–Όλ§ˆλ‚˜ λ§Žμ€ μ‹œκ°„μ„ μ†ŒλΉ„ν–ˆλŠ”κ°€?
  • μƒˆλ‘œμš΄ λ™λ£Œμ—κ²Œ λ‹Ήμ‹ μ˜ ν”„λ‘œμ νŠΈμ˜ 아킀텍쳐λ₯Ό μ„€λͺ…ν•˜κΈ° μœ„ν•΄ μ–Όλ§ˆλ‚˜ λ§Žμ€ μ‹œκ°„μ΄ ν•„μš”ν•œκ°€?

Why Clean Architecture ?

  • μƒˆλ‘œμš΄ κΈ°λŠ₯이 μΆ”κ°€λ˜κ±°λ‚˜ λ‚΄λΆ€ 둜직이 λ³€κ²½λ˜μ–΄μ•Ό ν•  λ•Œ μœ μ—°ν•˜κ²Œ λŒ€μ²˜ν•  수 μžˆλ„λ‘ ꡬ쑰화할 수 μžˆλ‹€.
  • ν”„λ ˆμž„μ›Œν¬ 독립적, μ‹œμŠ€ν…œμ„ ν”„λ ˆμž„μ›Œν¬μ˜ ν•œμ •λœ μ œμ•½μ— μ–΅μ§€λ‘œ μ§‘μ–΄λ„£λŠ” λŒ€μ‹  λ„κ΅¬λ‘œμ„œ μ‚¬μš©ν•  수 μžˆλ‹€.
  • UI 독립적, UI λ³€κ²½ μ‹œ UI μ™Έμ˜ 뢀뢄을 λ³€κ²½ν•  ν•„μš”κ°€ μ „ν˜€ μ—†λ‹€.
  • λ°μ΄ν„°λ² μ΄μŠ€ 독립적, 심지어 SQL μ—μ„œ NoSQL으둜 변경해도 μ•„λ¬΄λŸ° 지μž₯이 μ—†λ‹€. (μ•ˆλ“œλ‘œμ΄λ“œμ˜ κ²½μš°λŠ” Realm 이든 Room 이든 상관이 μ—†λ‹€!)
  • μ‰¬μš΄ ν…ŒμŠ€νŠΈ, μ™ΈλΆ€ μš”μΈ 없이 ν…ŒμŠ€νŠΈ κ°€λŠ₯ν•˜κ³ , 심지어 ν…ŒμŠ€νŠΈ 속도도 λΉ λ₯΄λ‹€!
  • 결둠적으둜, λΉ„μ¦ˆλ‹ˆμŠ€ λ³€κ²½ 사항에 μ΅œλŒ€ν•œ λΉ λ₯΄κ²Œ λŒ€μ‘ν•˜λ©° μ‹œμŠ€ν…œ 경쟁λ ₯을 높일 수 μžˆμ–΄μ•Ό ν•œλ‹€.
  • κ·Έλ ‡κ²Œ ν•˜λ €λ©΄, λͺ¨λ“ˆμ„ μ μ ˆν•œ κ²½κ³„λ‘œ λ‚˜λˆ”μœΌλ‘œμ„œ ν•œ λͺ¨λ“ˆμ— λŒ€ν•΄ 변경사항이 생기면 λ‹€λ₯Έ λͺ¨λ“ˆμ„ κ±΄λ“œλ¦΄ 일이 없이 κ·Έ λͺ¨λ“ˆλ§Œ κ±΄λ“€κ²Œλ” 섀계해야 ν•œλ‹€.
  • 쒋은 μ•„ν‚€ν…μ²˜λŠ” 툴과 ν”„λ ˆμž„μ›Œν¬μ— λŒ€ν•œ 결정사항을 μ΅œλŒ€ν•œ λ’€λ‘œ λ―Έλ£° 수 μžˆμ–΄μ•Ό ν•œλ‹€. (DB, μ›Ήμ„œλ²„, DI λ“±)

  • λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μ΄λž€?
    • ν•˜λ‚˜μ˜ ν”„λ‘œμ νŠΈλ‚˜ ν”„λ‘œκ·Έλž¨ 쀑 업무와 κ΄€λ ¨λœ 처리λ₯Ό ν•˜λŠ” 일뢀뢄을 λœ»ν•˜λŠ”λ° ν”„λ‘œμ νŠΈλ₯Ό ν•˜λ©΄μ„œ λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ μ–΄λ– ν•œ 자료λ₯Ό κ°€μ Έμ™€μ„œ μ›Ήμ—μ„œ 좜λ ₯을 ν•  λ•Œ λ°μ΄ν„°λ² μ΄μŠ€ μ—°κ²°, 톡신, μžλ£Œκ°€κ³΅, νŽ˜μ΄μ§€ ꡬ성등 μ—¬λŸ¬ μž‘μ—…μ„ ν•˜μ§€λ§Œ κ·Έ μ€‘μ—μ„œ μ‚¬μš©μžκ°€ μ›ν•˜λŠ” 자료의 가곡 뢀뢄을 μ˜λ―Έν•œλ‹€. 즉, μ–΄λ–»κ²Œ 데이터가 생성, μ €μž₯되고 μˆ˜μ •λ˜λŠ”μ§€λ₯Ό μ •μ˜ν•œ 것

μ˜μ‘΄μ„± κ·œμΉ™

image image

  • λŒ€κ°œ λ°”κΉ₯μͺ½μœΌλ‘œ ν–₯ν• μˆ˜λ‘ κ³ μˆ˜μ€€μ˜ μ†Œν”„νŠΈμ›¨μ–΄κ°€ λ˜λŠ” κ²½μš°κ°€ λ§Žλ‹€.
  • 이 λ•Œ λ°”κΉ₯μͺ½ 원은 λ©”μ»€λ‹ˆμ¦˜μ΄κ³  μ•ˆμͺ½μ˜ 원은 정책이닀.
  • μœ„μ˜ μ•„ν‚€ν…μ²˜λ₯Ό κ°€λŠ₯ν•˜κ²Œ ν•˜λŠ” μ€‘μš” κ·œμΉ™μ€ λ°”λ‘œ 의쑴 κ·œμΉ™μ΄λ‹€.
  • κ·œμΉ™μ— μ˜ν•΄μ„œ μ†ŒμŠ€ μ½”λ“œλŠ” μ•ˆμͺ½μ„ ν–₯ν•΄μ„œλ§Œ μ˜μ‘΄ν•  수 있고, μ•ˆμͺ½μ˜ 원은 λ°”κΉ₯μͺ½ 원에 λŒ€ν•΄ μ „ν˜€ μ•Œμ§€ λͺ»ν•œλ‹€.
  • λ°”κΉ₯μͺ½ μ›μ—μ„œ μ„ μ–Έλœ μ–΄λ–€ μš”μ†Œλ₯Ό μ•ˆμͺ½ μ›μ—μ„œλŠ” μ°Έμ‘°ν•˜κ±°λ‚˜ 영ν–₯을 μ€˜μ„œλŠ” μ ˆλŒ€ μ•ˆλœλ‹€.
  • μ •λ¦¬ν•˜λ©΄, 각각 ν΄λž˜μŠ€λŠ” ν•œ 가지 μ—­ν• λ§Œ μˆ˜ν–‰ν•˜κ²Œ λ§Œλ“€κ³ , μ„œλ‘œμ˜ 의쑴 관계λ₯Ό μ–΄λ–»κ²Œ 할지 κ·œμΉ™μ„ μ •ν•΄μ£Όμ–΄μ•Ό ν•œλ‹€. .equals("μ˜μ‘΄μ„± κ·œμΉ™")

  • λ©”μ»€λ‹ˆμ¦˜? μ •μ±…?
    • λ©”μ»€λ‹ˆμ¦˜ : μ–΄λ–€ 일을 μ–΄λ–»κ²Œ ν•  것인가λ₯Ό κ²°μ • (How)
    • μ •μ±… : 무엇을 ν•  것인가λ₯Ό κ²°μ • (What)
    • 예λ₯Ό λ“€μ–΄ μ•ˆλ“œλ‘œμ΄λ“œμ—μ„œ 검색 κΈ°λŠ₯을 κ΅¬ν˜„ν•œλ‹€κ³  ν–ˆμ„ λ•Œ, μœ μ €κ°€ 검색 λ²„νŠΌμ„ λˆ„λ₯΄λ©΄ μœ μ € μž…μž₯μ—μ„œλŠ” ν•œ λ²ˆμ— 검색 κ²°κ³Όκ°€ λ‚˜μ˜€λŠ” κ²ƒμ²˜λŸΌ λ³΄μ΄μ§€λ§Œ, μ‹€μ œλ‘œλŠ” λ‚΄λΆ€ λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μ— μ˜ν•΄ 검색 κ²°κ³Όκ°€ μΆ”μΆœλœλ‹€. λ§Œμ•½ μœ„μ˜ 클린 μ•„ν‚€ν…μ²˜λ₯Ό 따라가면 λ°”κΉ₯μͺ½ 원인 Viewμ—μ„œλŠ” λ‹¨μˆœν•˜κ²Œ κ²°κ³Όλ₯Ό λ°›μ•„μ„œ λ³΄μ—¬μ£ΌκΈ°λ§Œ ν•˜λ©΄ λ˜μ§€λ§Œ, μ•ˆμͺ½μ—μ„œλŠ” 검색값을 λ°›μ•„μ„œ μ–΄λ–»κ²Œ μ²˜λ¦¬ν• μ§€ κ²°μ •ν•΄μ•Ό ν•œλ‹€.

Entity

  • λΉ„μ¦ˆλ‹ˆμŠ€ κ·œμΉ™μ„ μΊ‘μŠν™”ν•œλ‹€.
  • λ©”μ†Œλ“œλ₯Ό κ°–λŠ” 객체일 μˆ˜λ„ μžˆμœΌλ‚˜ 데이터 ꡬ쑰, ν•¨μˆ˜μ˜ 집합일 μˆ˜λ„ μžˆλ‹€.
  • κ°€μž₯ μΌλ°˜μ μ΄λ©΄μ„œ κ³ μˆ˜μ€€μ˜ κ·œμΉ™μ„ μΊ‘μŠν™”ν•œλ‹€.
  • λ°”κΉ₯μͺ½μ—μ„œ μ–΄λ–€ 것이 λ³€κ²½λ˜λ”λΌλ„ μ ˆλŒ€ λ°”λ€Œμ§€ μ•ŠλŠ”λ‹€.
  • μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ μ–΄λ–€ λ™μž‘μ„ ν•˜λ”λΌλ„ Entity κ³„μΈ΅μ—λŠ” 영ν–₯을 μ£Όμ–΄μ„  μ•ˆλœλ‹€.

Usecase

  • μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ 고유 λΉ„μ¦ˆλ‹ˆμŠ€ κ·œμΉ™μ„ ν¬ν•¨ν•˜λ©°, μ‹œμŠ€ν…œμ˜ λͺ¨λ“  Usecase λ₯Ό μΊ‘μŠν™”ν•˜κ³  κ΅¬ν˜„ν•œλ‹€.
  • Entity 의 데이터 흐름을 λ™μž‘μ„ μ œμ–΄ν•œλ‹€.
  • λ‹Ήμ—°νžˆ, μ—¬κΈ°μ„œ 변경이 μΌμ–΄λ‚˜λ”λΌλ„ Entity μ—κ²ŒλŠ” 영ν–₯을 주지 μ•Šμ•„μ•Ό ν•œλ‹€.
  • λ˜ν•œ, λ°μ΄ν„°λ² μ΄μŠ€ - UIμ—μ„œ 변경이 μΌμ–΄λ‚˜λ”λΌλ„ 영ν–₯을 받지 μ•Šμ•„μ•Ό ν•œλ‹€.
  • κ°œλ°œμžμ—κ²Œ μ€‘μš”ν•œ 것은 Usecase κ°€ μ •ν™•ν•˜κ²Œ λ™μž‘ν•˜λŠ” 것이닀.
  • Usecase 의 λ™μž‘ κ²°κ³Όλ₯Ό ν™•μΈν•˜λŠ” μž‘μ—…μ„ 진행할 λ•Œ UIλ₯Ό ν•„μš”λ‘œ ν•˜λŠ” κ²½μš°λŠ” μ—†μ–΄μ•Ό ν•œλ‹€.
  • Interactors 라고도 칭해진닀.

Interface Adapter

  • View λ“± μ™ΈλΆ€μ˜ κΈ°λŠ₯ ν˜Ήμ€ μ‚¬μš© 쀑인 ν”„λ ˆμž„μ›Œν¬μ— μš©μ΄ν•œ ν˜•μ‹μœΌλ‘œ 데이터λ₯Ό λ³€ν™˜ν•œλ‹€.
  • μ•ˆλ“œλ‘œμ΄λ“œμ˜ MVVM νŒ¨ν„΄μ—μ„œλŠ” ViewModel μ˜μ—­μ΄λ‹€.
  • Model β†’ Usecase β†’ ViewModel 둜 λŒμ•„κ°€λŠ” 데이터 ꡬ쑰일 κ°€λŠ₯성이 λ†’λ‹€.
  • 결둠적으둜 μˆœμˆ˜ν•œ λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§λ§Œμ„ λ‹΄λ‹Ήν•˜λŠ” 역할을 ν•œλ‹€.

Frameworks & Drivers(Web, DB)

  • λ°μ΄ν„°λ² μ΄μŠ€, μ›Ή ν”„λ ˆμž„μ›Œν¬ 등이 μœ„μΉ˜ν•΄μžˆλ‹€.
  • 웹이든, λ°μ΄ν„°λ² μ΄μŠ€λ“  μƒμ„Έν•œ μ •λ³΄λŠ” λͺ¨λ‘ 이 곳에 λ‘”λ‹€.
  • μ•ˆμͺ½μ˜ 원과 톡신할 μ—°κ²° μ½”λ“œ μ™Έμ—λŠ” 별닀λ₯Έ μ½”λ“œλ₯Ό μž‘μ„±ν•˜μ§€ μ•ŠλŠ”λ‹€.
  • UIμ—λŠ” λ‚΄κ°€ ν•˜κ³ μž ν•˜λŠ” 것듀(Usecase) λ₯Ό κ΅¬ν˜„ν•˜λŠ” 것이 μ•„λ‹ˆλΌ, μ˜€λ‘œμ§€ 세뢀사항이닀.
  • UIλŠ” 단지 λ‚΄κ°€ 무언가λ₯Ό μ‚¬μš©μžλ“€μ—κ²Œ 보여쀄 λ•Œλ‚˜ ν•„μš”ν•œ 것이닀.

πŸ“± Clean Architecture in Android

  • 2012λ…„ 클린 μ•„ν‚€ν…μ²˜μ— κ΄€ν•œ 글이 처음 곡개된 이 ν›„, μ–΄λ–»κ²Œ ν•˜λ©΄ λͺ¨λ°”일 μ„€κ³„μ—μ„œ 클린 μ•„ν‚€ν…μ²˜μ˜ 도움을 받을 수 μžˆμ„μ§€ λ§Žμ€ λ…Όμ˜κ°€ μžˆμ—ˆλ‹€.
  • 결과적으둜 λ„€ 개인 계측을 μž¬κ΅¬μ„±ν•˜μ—¬ μ„Έ 개의 κ³„μΈ΅μœΌλ‘œ λΆ„λ¦¬ν•˜λŠ” κ²ƒμœΌλ‘œ μΌλ°˜ν™”λ˜μ—ˆλ‹€.
  • 각 계측이 자체 데이터 λͺ¨λΈμ„ μ‚¬μš©ν•˜λ―€λ‘œ 계측 κ°„ 독립성을 확보할 수 μžˆλ‹€λŠ” 것이 μ€‘μš”ν•˜λ‹€.
    • 이 λ•Œ 계측 κ°„ 데이터 λ³€ν™˜μ„ μˆ˜ν–‰ν•˜κΈ° μœ„ν•΄ Mapper κ°€ ν•„μš”ν•΄μ§„λ‹€.

image

Domain Layer

  • λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μ„ ν¬ν•¨ν•˜κ³  있으며, 이에 ν•„μš”ν•œ Entity 와 Usecase, Repository λ₯Ό ν¬ν•¨ν•œλ‹€.
  • Domain λ ˆμ΄μ–΄λŠ” Presentation λ ˆμ΄μ–΄, Data λ ˆμ΄μ–΄μ™€ μ–΄λ–€ μ˜μ‘΄μ„±λ„ 맺지 μ•Šμ•„μ•Ό ν•œλ‹€.
  • 순수 μ½”ν‹€λ¦° ν˜Ήμ€ μžλ°” μ½”λ“œλ‘œ κ΅¬μ„±λ˜μ–΄ μžˆμ–΄ λ‹€λ₯Έ ν”„λ ˆμž„μ›Œν¬μ—μ„œλ„ μœ μ—°ν•˜κ²Œ μ‚¬μš©μ΄ κ°€λŠ₯ν•˜λ‹€.

Usecase

  • 각 κΈ°λŠ₯ ν˜Ήμ€ λΉ„μ¦ˆλ‹ˆμŠ€ 논리 λ‹¨μœ„λ‘œ κ΅¬μ„±λœλ‹€.
  • μ΄λ¦„λ§Œ 보고 μ–΄λ–€ κΈ°λŠ₯을 μˆ˜ν–‰ν•˜λŠ”μ§€ μ§μž‘ν•  수 μžˆμ–΄μ•Ό ν•œλ‹€.
  • Presentation λ ˆμ΄μ–΄μ˜ UIμ—μ„œ μ–΄λ–€ 이벀트 ν˜Ήμ€ λ™μž‘μ— μ˜ν•΄ ν˜ΈμΆœλ˜λŠ” λ°©ν–₯으둜 μ„€κ³„ν•œλ‹€.
  • Data λ ˆμ΄μ–΄μ—μ„œ μ‹€μ œ 데이터λ₯Ό μ–΄λ–»κ²Œ κ°€μ Έμ˜¬μ§€ μ •μ˜λŠ” ν•˜μ§€ μ•Šκ³ , ν•΄λ‹Ή λ©”μ†Œλ“œλ₯Ό ν˜ΈμΆœν•˜λŠ” λ°©μ‹μœΌλ‘œ 데이터λ₯Ό μ €μž₯ν•œλ‹€.

Translater

  • Data λ ˆμ΄μ–΄μ˜ Entity λ₯Ό Domain λ ˆμ΄μ–΄μ˜ Model 둜 λ³€ν™˜ν•˜λŠ” 역할을 μˆ˜ν–‰ν•œλ‹€.

Repository

  • Domain λ ˆμ΄μ–΄μ—μ„œλŠ” μΈν„°νŽ˜μ΄μŠ€λ‘œ μ •μ˜ν•˜κ³ , μ‹€μ œ κ΅¬ν˜„μ€ Data λ ˆμ΄μ–΄μ—μ„œ μ§„ν–‰λœλ‹€.

Model

  • μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μ‹€μ§ˆμ  데이터가 여기에 κ΅¬ν˜„λœλ‹€.
  • μ•ˆλ“œλ‘œμ΄λ“œμ™€ μ˜μ‘΄μ„±μ„ 가지고 μžˆμ–΄μ„  μ•ˆλ˜κ³ , λ‹€λ₯Έ ν”„λ‘œμ νŠΈμ—μ„œλ„ λ™μΌν•˜κ²Œ μ‚¬μš©ν•  수 μžˆλŠ” 클래슀λ₯Ό μž‘μ„±ν•΄μ•Ό ν•œλ‹€.

Data Layer

  • Data λ ˆμ΄μ–΄λŠ” Domain λ ˆμ΄μ–΄μ— μ˜μ‘΄μ„±μ„ μ§€λ‹ˆκ³  μžˆλ‹€.

Repository

  • Usecase κ°€ ν•„μš”λ‘œ ν•˜λŠ” 데이터 μ €μž₯, μˆ˜μ •λ“±μ˜ κΈ°λŠ₯을 μ œκ³΅ν•œλ‹€.
  • μœ„μ˜ Domain λ ˆμ΄μ–΄μ—μ„œ μ„€κ³„ν•œ Repository λ₯Ό μ‹€μ œλ‘œ κ΅¬ν˜„ν•œλ‹€.

DataSource

  • μ‹€μ œ λ°μ΄ν„°μ˜ μž…μΆœλ ₯을 μ§„ν–‰ν•œλ‹€.
  • Room 을 μ‚¬μš©ν•œλ‹€κ³  κ°€μ •ν•˜λ©΄ Dao λ₯Ό 이 λΆ€λΆ„μ—μ„œ μ ‘κ·Όν•˜κ³  κ²°κ³Όλ₯Ό 좜λ ₯ν•œλ‹€.

Entity

  • Domain λ ˆμ΄μ–΄μ˜ Model κ³ΌλŠ” λ‹€λ₯΄κ²Œ, REST API의 μš”μ²­/응닡을 μœ„ν•œ JSON, 둜컬 DB에 μ €μž₯ν•˜κΈ° μœ„ν•œ ν…Œμ΄λΈ”μ— μ €μž₯ν•˜κΈ° μœ„ν•œ 데이터λ₯Ό μ •μ˜ν•œλ‹€.

Presentation Layer

  • λ‚΄λΆ€μ μœΌλ‘œ ν”„λ ˆμž„μ›Œν¬ μ˜μ‘΄μ„±μ„ μ²˜λ¦¬ν•˜κΈ° μœ„ν•΄ MVP ν˜Ήμ€ MVVM νŒ¨ν„΄μ„ μ‚¬μš©ν•œλ‹€.
  • Acitivity, Fragment, Presenter, ViewModel 을 ν¬ν•¨ν•œλ‹€.

View

  • UI κ΅¬ν˜„κ³Ό μ‚¬μš©μž μž…λ ₯λ§Œμ„ λ‹΄λ‹Ήν•œλ‹€.
  • 화면에 κ·Έλ €μ§€λŠ” 것이 μ–΄λ–€ μ˜λ―Έκ°€ μžˆλŠ”μ§€λŠ” μ „ν˜€ μ•Œμ§€ λͺ»ν•΄μ•Ό ν•œλ‹€.
  • 데이터λ₯Ό μ§€λ‹ˆκ³  μžˆλ”λΌλ„ ν™”λ©΄κ³Ό κ΄€λ ¨λœ λ°μ΄ν„°λ§Œ μ§€λ‹ˆκ³  μžˆμ–΄μ•Ό ν•œλ‹€. (e.g. : ν™”λ©΄μ˜ μ’Œν‘œ)

Presenter (ViewModel)

  • View 와 달리 ν”Œλž«νΌ(e.g. : μ•ˆλ“œλ‘œμ΄λ“œ)에 μ§μ ‘μ μœΌλ‘œ μ˜μ‘΄ν•˜μ§€ μ•ŠμœΌλ―€λ‘œ λ‹¨μœ„ ν…ŒμŠ€νŠΈκ°€ κ°€λŠ₯ν•˜λ‹€.
  • λ˜ν•œ 화면에 κ·Έλ €μ§€λŠ” 것이 μ–΄λ–€ 의미λ₯Ό 가지고 μžˆλŠ”μ§€ μ•Œκ³  μžˆλ‹€.
  • μ‚¬μš©μž μž…λ ₯이 왔을 λ•Œ μ–΄λ–€ λ°˜μ‘μ„ ν•΄μ•Όν•˜λŠ”μ§€μ— λŒ€ν•œ νŒλ‹¨λ„ 이 κ³³μ—μ„œ μ§„ν–‰ν•œλ‹€.
  • Domain λ ˆμ΄μ–΄μ˜ Usecase λ₯Ό μ£Όμž…λ°›μ•„ 데이터λ₯Ό κ°€μ Έμ˜¨λ‹€.
  • λ‹Ήμ—°νžˆ, Data λ ˆμ΄μ–΄μ— μ˜μ‘΄μ„±μ΄ μ—†κΈ° λ•Œλ¬Έμ— 데이터λ₯Ό κ°€μ Έμ˜€λŠ” 과정에 μ ‘κ·Όν•  수 μ—†λ‹€.

μ •λ¦¬ν•˜λ©΄μ„œ 배운 것

  • λ°μ΄ν„°λ² μ΄μŠ€κ°€ 쀑점이 λ˜λŠ” 것이 μ•„λ‹ˆλΌ, 앱에 ν‘œν˜„ν•  λͺ¨λΈμ΄ μ€‘μš”ν•œ 것이닀. λ°μ΄ν„°λ² μ΄μŠ€λŠ” μ˜€λ‘œμ§€ λΆ€μˆ˜μ μΈ 것이닀.
    • νšŒμ› λ¦¬μŠ€νŠΈκ°€ μžˆλ‹€κ³  ν–ˆμ„ λ•Œ, μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— (이름 - λ‚˜μ΄ - 학ꡐ) λ₯Ό ν‘œν˜„ν• μ§€, (이름 - λ‚˜μ΄)만 ν‘œν˜„ν• μ§€κ°€ μ€‘μš”ν•˜μ§€ κ·Έ 데이터λ₯Ό 담을 λ°μ΄ν„°λ² μ΄μŠ€λŠ” 무엇이건 상관이 μ—†λ‹€.
  • λͺ¨λ“  μ•„ν‚€ν…μ²˜μ˜ 지ν–₯점은 κ²°κ΅­ 개발 쀑 μˆ˜μ •μ‚¬ν•­μ΄ 생겼을 λ•Œ 변경점을 μ΅œμ†Œν™”ν•˜λŠ” 것이닀.

참고 및 좜처

About

🧼 슬기둭고 싢은 클린 μ•„ν‚€ν…μ²˜ μŠ€ν„°λ””

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages