[java] Android의 MVC 패턴

Android 용 Java에서 모델보기 컨트롤러 패턴을 구현할 수 있습니까?

아니면 이미 활동을 통해 구현 되었습니까? 아니면 Android 용 MVC 패턴을 구현하는 더 좋은 방법이 있습니까?



답변

Android에는 MVC가 없지만 다음이 있습니다.

  • 해상도, 하드웨어 등에 따라 다양한 XML 파일로 사용자 인터페이스 를 정의합니다 .
  • 로케일 등으로 다양한 XML 파일에서 자원 을 정의합니다 .
  • ListActivity , TabActivity 와 같은 클래스를 확장 하고 인플레이터로 XML 파일을 사용합니다 .
  • 비즈니스 로직에 대해 원하는만큼 클래스를 작성할 수 있습니다.
  • 많은 Utils 가 이미 작성되었습니다 -DatabaseUtils , Html.

답변

보편적으로 독특한 MVC 패턴은 없습니다. MVC는 견고한 프로그래밍 프레임 워크가 아닌 개념입니다. 모든 플랫폼에서 고유 한 MVC를 구현할 수 있습니다. 다음 기본 아이디어를 따르는 한 MVC를 구현하고 있습니다.

  • 모델 : 렌더링 대상
  • 보기 : 렌더링 방법
  • 컨트롤러 : 이벤트, 사용자 입력

모델을 프로그래밍 할 때 모델은 렌더링 (또는 플랫폼 별 코드)에 대해 걱정할 필요가 없습니다. 모델은보기에 말하기를, 렌더링이 Android 또는 iOS 또는 Windows Phone인지 상관하지 않습니다. 이것은 렌더링해야합니다. 뷰는 플랫폼 별 렌더링 코드 만 처리합니다.

플랫폼 간 응용 프로그램을 개발하기 위해 Mono 를 사용 하여 모델을 공유 할 때 특히 유용 합니다.


답변

안드로이드에 대한 조치,보기 및 활동은 구운에 안드로이드 UI 작업의 방법과의 구현입니다 모델 – 뷰 – 뷰 모델 (MVVM) 패턴 (같은 가족) 모델 – 뷰 구조적으로 유사하다, -제어 장치.

내가 아는 한,이 모델에서 벗어날 수있는 방법은 없습니다. 아마도 가능할 수도 있지만 기존 모델의 모든 이점을 잃을 수도 있고 UI 레이어를 다시 작성해야 작동 할 수도 있습니다.


답변

일부 검색 후 가장 합리적인 답변은 다음과 같습니다.

MVC는 이미 Android에서 다음과 같이 구현되었습니다.

  1. 보기 = 레이아웃, 자원과 내장 같은 클래스 Button에서 파생 android.view.View.
  2. 컨트롤러 = 활동
  3. 모델 = 애플리케이션 로직을 구현하는 클래스

(이것은 활동에 응용 프로그램 도메인 논리가 없음을 의미합니다.)

소규모 개발자에게 가장 합리적인 것은이 패턴을 따르고 Google이하지 않기로 결정한 것을하지 않는 것입니다.

추신 활동이 때때로 재시작되기 때문에 모델 데이터를위한 장소가 아닙니다 (다시 시작하는 가장 쉬운 방법 android:configChanges="keyboardHidden|orientation"은 XML에서 생략 하고 기기를 돌리는 것입니다).

편집하다

우리는 MVC 에 대해 이야기하고 있지만 FMVC , Framework–Model–View–Controller 라고 말할 것 입니다. 프레임 워크 (안드로이드 OS)의 구성 요소 라이프 사이클 및 관련 이벤트의 아이디어를 부과하고, 연습에 컨트롤러 ( Activity/ Service/ BroadcastReceiver) 다음에 대처하기위한 우선 책임의입니다 프레임 워크 이벤트 -imposed (예 에서 onCreate ()를 ). 사용자 입력을 별도로 처리해야합니까? 분리해야 할 경우에도 사용자 입력 이벤트도 Android에서 제공됩니다.

어쨌든 안드로이드 전용이 아닌 코드가 적을수록 Activity/ Service/ BroadcastReceiver에 더 좋습니다.


답변

준수 할 수있는 단일 MVC 패턴은 없습니다. MVC는 데이터와 뷰를 혼동해서는 안된다고 다소 언급하고 있습니다. 예를 들어 뷰가 데이터를 보유 할 책임이 있거나 데이터를 처리하는 클래스가 뷰에 직접 영향을 미칩니다.

그럼에도 불구하고 Android가 클래스 및 리소스를 처리하는 방식에 따라 MVC 패턴을 따라야하는 경우도 있습니다. 내 견해로는 때로는 견해를 담당하는 활동이 있지만 그럼에도 불구하고 동시에 컨트롤러 역할을하는 활동이 더 복잡합니다.

XML 파일에서보기 및 레이아웃을 정의하고 res 폴더에서 리소스를로드하고 코드에서 이러한 것들을 혼동하지 않도록하려면 MVC 패턴을 따르십시오.


답변

Android에서 MVC를 구현할 수 있지만 “기본적으로 지원되지”않으며 약간의 노력이 필요합니다.

즉, 개인적으로 안드로이드 개발을위한 훨씬 깨끗한 아키텍처 패턴 으로 MVP 를 선호 합니다. 그리고 MVP라고 말하면 이것을 의미합니다.

여기에 이미지 설명을 입력하십시오

나는 또한 여기에 더 자세한 답변을 게시했습니다 .

Android에서 MVC / MVP 구현에 대한 다양한 접근 방식을 사용한 후 합리적인 아키텍처 패턴 을 찾았 습니다.이 게시물 에서는 Android의 MVP 및 MVC 아키텍처 패턴에 대해 설명했습니다 .


답변

Android에서 MVC를 구현하는 가장 좋은 리소스는 다음 게시물입니다 .

나는 내 프로젝트 중 하나에 대해 동일한 디자인을 따랐으며 훌륭하게 작동했습니다. 저는 안드로이드 초보자이므로 이것이 최선의 해결책이라고 말할 수는 없습니다.

하나의 수정을했습니다. 가로 세로 모드가 변경 될 때 다시 만들지 않도록 응용 프로그램 클래스의 각 활동에 대한 모델과 컨트롤러를 인스턴스화했습니다.