세상을 바꾸는 개발자

[Android] 안드로이드 디자인패턴 3 - 1 MVC패턴 본문

안드로이드/Design Pattern

[Android] 안드로이드 디자인패턴 3 - 1 MVC패턴

헬창코딩 2021. 7. 9. 21:20

안녕하세요! 헬창코딩입니다. 오늘은 디자인 패턴에 대해서 알아보도록 하겠습니다.!!

먼저 mvc패턴은 안드로이드 아키텍처에서 가장 많이 쓰여왔으며 기본이 되는  디자인 패턴입니다. 

 

 

MVC 패턴은 말 그대로 모델(Model), 뷰(View), 컨트롤러(Controller)의 약자입니다. 

 

 

MVC 패턴의 구조

 

모델(Model) 

- 애플리케이션에서 비즈니스 로직과 사용되는 데이터를 다루는 영역

- 표현되는 형식에 의존적이지 않고, 사용자에게 보이지 않아 어떻게 보일 지를 신경 쓰지 않아도 됩니다.

 

모델(Model)의 역할 

- 일반적으로 비즈니스 데이터는 DBMS에 의해 관리되고 몇몇 함수를 통해 데이터를 제공하거나 입력, 수정 등을 하는 역할을 합니다.

- 안드로이드에서는 데이터베이스의 Entity를 담당하는 POJO클래스를 포함한 SQLite, Room, Realm 들 이 될 수 있습니다. 

 

여기서 POJO 란??

public class SimpleBean {
    private String name;
    private String age;
 
    public void setName(String name) {
        this.name = name;
    }
    public String getName() {
        return this.name;
    }
 
    public void setAge(String age) {
        this.age = age;
    } 
    public String getAge() {
        return this.age;
    }
 
}

우리가 개발을 하면서  엄청 많이 만드는 바로 이 빈 클래스가 POJO입니다!!!

 

 

 

 

 

뷰(View)

- 사용자에게 표현되는 영역입니다. 

 

뷰(View)의 역할

- 모델로부터 얻은 데이터를 뷰에서 표현합니다.

- 안드로이드에서는 Activity, Fragment가 뷰의 역할을 합니다.

 

 

 

 

컨트롤러(Controller)

- 사용자가 데이터를 클릭하고, 수정하는 것에 대한 "이벤트"들을 처리하는 부분

 

컨트롤러(Controller)의 역할

- 뷰로부터 입력을 받거나 특정 이벤트가 발생할 때 모델 또는 뷰를 변경할 수 있습니다. 

 

예를 들어 전화번호부 애플리케이션에서 전화번호를 등록한다고 할 때 사용자가 전화번호 및 기타 정보를  뷰로부터 입력받으면 컨트롤러는

해당 데이터를 모델로 전환하여 데이터베이스에 입력합니다. 이때 보델의 상태가 바뀌면 모델은 등록된 뷰에 자신의 상태가 바뀌었다는 것을 알리고 뷰는 거기에 맞게 사용자에게 모델의 상태를 보여줍니다.

MVC패턴에서 Activity와 Fragment는 뷰의 역할을 하지만 컨트롤러의 역할을 하기도 합니다. 

 

 

 

MVC 패턴의 장점

- 모델에서 데이터를 얻어서 뷰에 표현하고 이 모든 것을 컨트롤러가 중재하기 때문에 구조가 단순하고 직관적입니다. 그래서 MVC를 잘 모르는 사람이라도 쉽게 받아들이고 적용할 수 있습니다. 

 

-규모가 작은 애플리케이션에 MVC패턴을 적용 시 개발기간이 짧아지고, 거의 모든 코드가 액티비티나 프래그먼트에 작성되는 경향이 있어서 코드를 파악하기 쉽습니다. 

 

MVC 패턴의 단점

- 액티비티 또는 프래그먼트가 뷰와 컨트롤러의 역할을 겸하는 구조라 코드량이 점진적으로 증가할 수밖에 없고, 그로 인해서 하나의 액티비티 또는 프래그먼트 클래스에서 수천 줄이 넘는 코드가 작성되기도 합니다. 그렇게 되면 스파게티 코드가 되고 유지보수 비용도 증가합니다. 

 

- 컨트롤러는 뷰와 모델에 의존적이고, 뷰는 모델에 의존적이라 결합도가 높아 유닛 테스트가 거의 불가능합니다.

 

 

 

 

 

 

 

 

 

 

오늘은 MVC 패턴에 대해서 알아봤습니다.~~

 

다음 시간에는 MVP 패턴에 대해서 알아보도록 하겠습니다. 

 

 

 

 

 

 

 

 

 

 

Comments