MVVM(Model-View-ViewModel) νŒ¨ν„΄μ€ μ•ˆλ“œλ‘œμ΄λ“œμ—μ„œ UI와 데이터 λ‘œμ§μ„ λΆ„λ¦¬ν•˜μ—¬ κ΅¬μ‘°ν™”λœ μ½”λ“œλ₯Ό μž‘μ„±ν•  수 μžˆλ„λ‘ λ„μ™€μ£ΌλŠ” λ””μžμΈ νŒ¨ν„΄μž…λ‹ˆλ‹€.

이 νŒ¨ν„΄μ„ μ μš©ν•˜λ©΄ μœ μ§€λ³΄μˆ˜μ„±, ν™•μž₯μ„±, ν…ŒμŠ€νŠΈ κ°€λŠ₯성이 ν–₯μƒλ©λ‹ˆλ‹€.


πŸ”Ή 1️⃣ MVVM νŒ¨ν„΄μ΄λž€?

MVVM νŒ¨ν„΄μ€ Model (데이터 처리), View (UI), **ViewModel (λΉ„μ¦ˆλ‹ˆμŠ€ 둜직, UI μƒνƒœ 관리)**의 μ„Έ κ°€μ§€ μ»΄ν¬λ„ŒνŠΈλ‘œ κ΅¬μ„±λ©λ‹ˆλ‹€.

πŸ“Œ MVVM ꡬ쑰

bash
λ³΅μ‚¬νŽΈμ§‘
app/
β”œβ”€β”€ data/             # 데이터 κ΄€λ ¨ 클래슀
β”‚   β”œβ”€β”€ model/        # 데이터 λͺ¨λΈ (예: Post.java)
β”‚   β”œβ”€β”€ repository/   # 데이터 μ†ŒμŠ€ (예: PostRepository.java)
β”‚   β”œβ”€β”€ network/      # API 톡신 (예: RetrofitClient.java, ApiService.java)
β”œβ”€β”€ ui/               # UI κ΄€λ ¨ 클래슀
β”‚   β”œβ”€β”€ view/         # UI 클래슀 (예: MainActivity.java, RecyclerView Adapter)
β”‚   β”œβ”€β”€ viewmodel/    # ViewModel (예: PostViewModel.java)


πŸ”Ή 2️⃣ MVVM νŒ¨ν„΄μ˜ 핡심 μ—­ν• 

βœ” 1) Model (λͺ¨λΈ)

java
λ³΅μ‚¬νŽΈμ§‘
public class Post {
    private int userId;
    private int id;
    private String title;
    private String body;

    public int getUserId() { return userId; }
    public int getId() { return id; }
    public String getTitle() { return title; }
    public String getBody() { return body; }
}


βœ” 2) View (λ·°)

java
λ³΅μ‚¬νŽΈμ§‘
viewModel.getPosts().observe(this, posts -> {
    adapter.setPosts(posts);
});