CS

[java] MVC

moaoh 2024. 3. 14. 20:28

MVC νŒ¨ν„΄μ΄λž€?

backendμ—μ„œ 섀계λ₯Ό ν• λ•Œ 많이 μ‚¬μš©λ˜λŠ” λ””μžμΈ νŒ¨ν„΄μ€‘μ— ν•˜λ‚˜λ‘œ Model, View, Controller둜 μ„Έ κ°€μ§€ μ—­ν• λ‘œ λΆ„λ¦¬ν•˜μ—¬ κ΄€λ¦¬ν•˜λŠ” λ””μžμΈ νŒ¨ν„΄μ΄λΌκ³ ν•œλ‹€.

 

  1. Model : 데이터와 데이터 처리 λ‘œμ§μ„ λ‹΄λ‹Ήν•˜κ³ , λ°μ΄ν„°λ² μ΄μŠ€μ™€ μƒν˜Έμž‘μš© 데이터 처리 및 검증과 같은 μž‘μ—…λ“€μ„ μ§„ν–‰ν•˜λŠ” 파트 μ‹€μ§ˆμ μœΌλ‘œ λ‚΄λΆ€μ—μ„œ 연산등을 μ§„ν–‰ν•˜λ©° 데이터λ₯Ό λΆˆλŸ¬μ˜¨λ‹€λ˜μ§€, 데이터가 μœ νš¨ν•œμ§€ κ²€μ¦ν•œλ‹€λ˜μ§€ λ“±μ˜ μž‘μ—…μ„ ν•˜λŠ” Model νŒŒνŠΈμ—μ„œ μž‘μ„±μ„ ν•œλ‹€.
  2. View : μ‚¬μš©μžμ—κ²Œ 정보λ₯Ό λ³΄μ—¬μ£ΌλŠ” 역할을 ν•˜λŠ” 파트 μ‚¬μš©μžμ—κ²Œ 정보λ₯Ό λ°˜ν™˜ν•΄μ£ΌλŠ” λ‘œμ§λ“€μ„ Viewμ—μ„œ 보톡 ꡬ성을 ν•©λ‹ˆλ‹€. ν•„μžκ°€ μ„€κ³„ν•œλŒ€λ‘œ 데이터λ₯Ό λ³΄μ—¬μ€€λ‹€λ˜κ°€, 데이터듀을 λ°›μ•„μ„œ μ €μž₯ν•œλ‹€λ˜κ°€ λ“±μ˜ λŒ€ν•œ μ½”λ“œλ₯Ό View νŒŒνŠΈμ—μ„œ μž‘μ„±μ„ ν•œλ‹€.
  3. Controller : μ‚¬μš©μžμ˜ μž…λ ₯을 λ°›μ•„ μ²˜λ¦¬ν•˜κ³  μ‚¬μš©μžκ°€ μ›ΉνŽ˜μ΄μ§€μ—μ„œ λ²„νŠΌμ„ λˆ„λ₯΄κ±°λ‚˜ 링크λ₯Ό ν΄λ¦­ν• λ•Œ μ μ ˆν•œ 처리λ₯Ό ν•˜λŠ” 파트λ₯Ό μ΄μ•ΌκΈ°ν•œλ‹€. Modelκ³Ό View μ—μ„œ μž‘μ„±μ„ ν–ˆλ˜ μ½”λ“œλ“€μ„ 적절히 잘 μ‘°ν•©ν•΄μ„œ μ‚¬μš©μžμ˜ μž…λ ₯에 따라 Model을 μ—…λ°μ΄νŠΈν•˜κΈ°λ„ ν•˜κ³ , μ‚¬μš©μžκ°€ μ›ν•˜λŠ” 데이터에 어떀것듀을 μ‘°ν•©ν•΄μ„œ 보여쀄것인지λ₯Ό μ •ν•˜λŠ” 것을 Controller νŒŒνŠΈμ—μ„œ μž‘μ„±μ„ ν•œλ‹€.

java μ˜ˆμ‹œ μ½”λ“œ

Model

public class UserModel {
    private String username;
    private String email;

    public UserModel(String username, String email) {
        this.username = username;
        this.email = email;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}

View

import java.util.Scanner;

public class UserView {
    private Scanner scanner;

    public UserView() {
        this.scanner = new Scanner(System.in);
    }

    public String getUsernameInput() {
        System.out.print("μ‚¬μš©μž 이름을 μž…λ ₯ν•˜μ„Έμš”: ");
        return scanner.nextLine();
    }

    public String getEmailInput() {
        System.out.print("이메일을 μž…λ ₯ν•˜μ„Έμš”: ");
        return scanner.nextLine();
    }

    public void closeScanner() {
        scanner.close();
    }

    public void displayUserDetails(String username, String email) {
        System.out.println("Username: " + username);
        System.out.println("Email: " + email);
    }
}

Controller

public class UserController {
    private UserModel model;
    private UserView view;

    public UserController(UserModel model, UserView view) {
        this.model = model;
        this.view = view;
    }

    public void setUserInput() {
        String username = view.getUsernameInput();
        String email = view.getEmailInput();
        model.setUsername(username);
        model.setEmail(email);
    }

    public void displayUserDetails() {
        String username = model.getUsername();
        String email = model.getEmail();
        view.displayUserDetails(username, email);
    }

    public void closeScanner() {
        view.closeScanner();
    }
}

main

public class Main {
    public static void main(String[] args) {
        UserModel user = new UserModel();
        UserView view = new UserView();
        UserController controller = new UserController(user, view);

        controller.setUserInput();
        controller.displayUserDetails();
        controller.closeScanner();
    }
}

μœ„μ— μ½”λ“œλ₯Ό 뢄석을 해보면 Model νŒŒνŠΈμ—μ„œλŠ” usernameκ³Ό email듀을 μ €μž₯ν•˜κ³  λ°˜ν™˜ν•  수 μžˆλ„λ‘ getter와 setter듀을 κ΅¬μ„±ν•˜κ³ μžˆκ³ ,

View νŒŒνŠΈμ—μ„œλŠ” μ‚¬μš©μžμ˜ usernameκ³Ό email을 λ°›λŠ” λΆ€λΆ„κ³Ό λ°˜ν™˜ν•΄μ£ΌλŠ” κ²ƒλ“€λ‘œ ꡬ성이 λ˜μ–΄μžˆκ³ ,

Controller νŒŒνŠΈμ—μ„œλŠ” μœ„μ—μ„œ μž‘μ„±ν•œ Modelκ³Ό Viewλ₯Ό 적절히 잘 μ‘°ν•©ν•΄μ„œ Viewλ₯Ό 톡해 μ‚¬μš©μžμ˜ μž…λ ₯을 λ°›μ•„ Model을 톡해 데이터λ₯Ό μΆ”κ°€ν•˜λŠ” setUserInput와 μ €μž₯ν•œ 데이터λ₯Ό 보여쀄 수 μžˆλŠ” displayUserDetailsκ°€ ꡬ성이 λ˜μ–΄μžˆλ‹€.


https://velog.io/@hwsa1004/Java-MVC-νŒ¨ν„΄