투케이2K

51. (TWOK/ALGORITHM) [Android] 패턴 - MVC (모델 , 뷰 , 컨트롤러) 형태 로직 구현 실시 본문

투케이2K 알고리즘

51. (TWOK/ALGORITHM) [Android] 패턴 - MVC (모델 , 뷰 , 컨트롤러) 형태 로직 구현 실시

투케이2K 2022. 8. 22. 16:52

[환경 설정 및 설명]

언 어 : Android (Java)

설 명 : 패턴 - MVC (모델 , 뷰 , 컨트롤러) 형태 로직 구현 실시

 

[요약 설명]

    /**
     * TODO [클래스 설명]
     * // -----------------------------------------
     * 1. MVC 패턴 동작 수행 클래스
     * // -----------------------------------------
     * 2. MVC 구성 :
     *  - M (모델) : 데이터 조작 (저장, 호출) 관련 클래스
     *  - V (뷰) : 사용자에게 표시되는 화면 (안드로이드 XML 레이아웃 / 사용자 인터페이스 제공)
     *  - C (컨트롤러) : 모델 , 뷰 를 연결하는 브릿지 (다리) 역할 (안드로이드 Activity 및 Fragment 클래스)
     * // -----------------------------------------
     * 3. MVC 동작 :
     *  - 사용자가 UI 화면 확인 (뷰)
     *  - 컨트롤러를 통한 이벤트 동작 (뷰 <-> 컨트롤러)
     *  - 컨트롤러는 모델 데이터 설정 (컨트롤러 <-> 모델)
     *  - 컨트롤러는 모델에서 설정한 데이터를 얻어온다 (컨트롤러 <-> 모델)
     *  - 컨트롤러에서 얻어온 데이터를 사용해 사용자 UI 화면에 표시 (컨트롤러 <-> 뷰)
     * // -----------------------------------------
     * 4. MVC 참고 사항 :
     *  - 컨트롤러는 모델, 뷰를 연결하는 브릿지 역할을 수행
     *  - 뷰는 사용자 UI 화면을 보여주는 것이며, 직접적으로 모델에 접근 불가
     *  - 모델은 데이터 저장, 호출, 데이터 가공 등 비즈니스 로직을 작성할 수 있으며, 직접적으로 뷰에 접근 불가
     * // -----------------------------------------
     * */
 

[프로젝트 구성]

 

[Model : 소스 코드]

package com.example.testapp.MVC;

public class Mvc_Model {


    // TODO [전역 변수 선언]
    private String name = "";
    private int age = 0;


    // TODO [클래스 생성자 초기화]
    public Mvc_Model(String name, int age){
        this.name = name;
        this.age = age;
    }


    // TODO [get 데이터 호출 메소드 정의]
    public String getUserInfo(){
        return "이름 : " + String.valueOf(name) + " / " + "나이 : " + String.valueOf(age);
    }
}
 

[View : 소스 코드]

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <TextView
        android:id="@+id/textView"
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:text="TEST"
        android:textAlignment="center"
        android:gravity="center"
        android:textSize="20dp"
        android:textStyle="bold"/>

    <Button
        android:id="@+id/button"
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:text="버튼"
        android:textAlignment="center"
        android:gravity="center"
        android:textSize="20dp"
        android:textStyle="bold"/>

</LinearLayout>
 

[Controller : 소스 코드]

package com.example.testapp.MVC;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import androidx.appcompat.app.AppCompatActivity;

import com.example.testapp.R;

public class Mvc_Controller extends AppCompatActivity {


    /**
     * TODO [클래스 설명]
     * // -----------------------------------------
     * 1. MVC 패턴 동작 수행 클래스
     * // -----------------------------------------
     * 2. MVC 구성 :
     *  - M (모델) : 데이터 조작 (저장, 호출) 관련 클래스
     *  - V (뷰) : 사용자에게 표시되는 화면 (안드로이드 XML 레이아웃 / 사용자 인터페이스 제공)
     *  - C (컨트롤러) : 모델 , 뷰 를 연결하는 브릿지 (다리) 역할 (안드로이드 Activity 및 Fragment 클래스)
     * // -----------------------------------------
     * 3. MVC 동작 :
     *  - 사용자가 UI 화면 확인 (뷰)
     *  - 컨트롤러를 통한 이벤트 동작 (뷰 <-> 컨트롤러)
     *  - 컨트롤러는 모델 데이터 설정 (컨트롤러 <-> 모델)
     *  - 컨트롤러는 모델에서 설정한 데이터를 얻어온다 (컨트롤러 <-> 모델)
     *  - 컨트롤러에서 얻어온 데이터를 사용해 사용자 UI 화면에 표시 (컨트롤러 <-> 뷰)
     * // -----------------------------------------
     * 4. MVC 참고 사항 :
     *  - 컨트롤러는 모델, 뷰를 연결하는 브릿지 역할을 수행
     *  - 뷰는 사용자 UI 화면을 보여주는 것이며, 직접적으로 모델에 접근 불가
     *  - 모델은 데이터 저장, 호출, 데이터 가공 등 비즈니스 로직을 작성할 수 있으며, 직접적으로 뷰에 접근 불가
     * // -----------------------------------------
     * */





    // TODO [빠른 로직 찾기 : 주석 로직 찾기]
    /**
     * // -----------------------------------------
     * // [SEARCH FAST] : []
     * // -----------------------------------------
     */





    // TODO [전역 변수 선언 실시]
    private static final String ACTIVITY_NAME = "Mvc_Controller";





    // TODO [액티비티 생명 주기 상태 체크 메소드]
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // -----------------------------------------
        // TODO MVC : VIEW : [액티비티 레이아웃 지정 실시]
        setContentView(R.layout.a_mvc_layout);
        // -----------------------------------------


        // -----------------------------------------
        // TODO [컴포넌트 매핑 실시]
        TextView textView = (TextView) findViewById(R.id.textView);
        Button button = (Button) findViewById(R.id.button);
        // -----------------------------------------


        // -----------------------------------------
        // TODO [버튼 클릭 이벤트 리스너 생성 실시 - 콜백]
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                // TODO [Model 데이터 설정 실시]
                Mvc_Model mvc_model = new Mvc_Model("투케이", 29);

                // TODO [Model 에 저장된 데이터 얻어온다]
                String userInfo = mvc_model.getUserInfo();

                // TODO [View 화면 변경 수행 실시]
                textView.setText(userInfo);
            }
        });
        // -----------------------------------------

    } // TODO [메인 종료]

} // TODO [클래스 종료]

 

반응형
Comments