예를 들어서 '서버에서 랜덤한 텍스트를 받아와서 화면에 뿌려주는' 프로그램을 짠다고 했을 때 

관심사 = 서버에서 랜덤한 텍스트를 받아온다, 화면에 텍스트를 표시한다
관심사의 분리 = 위에 적은 관심사대로 함수 또는 클래스를 분리하는 것 (알 필요가 없는 정보를 분리/제거)

관심사를 왜 분리하는지?
=> 알아보기 쉬움 = 수정하기 쉬움 = 유지보수 용이성
=> 의존성 분리 측면에서 필요
  [의존성이란?] 파라미터나 리턴값 또는 지역변수 등으로 다른 객체를 참조하는 것, 하나의 변경사항이 다른 하나에 영향을 끼치면 의존성이 있다고 함.
  ※ 왜 의존성을 분리해야하는지?
    = 유지보수할 때 영향 범주를 제한하기 위해
    = 서로의 변화에 영향을 받지 않기 위해 (의존성 전이가 발생되지 않게 하기 위해)


https://velog.io/@eddy_song/separation-of-concerns
https://leffept.tistory.com/401 (관심사 분리 예시)
https://willseungh0.tistory.com/61 (횡단 관심사 예시)

그 외 안드로이드 개발/정보 공유 카카오톡 단체 채팅방에서 도움을 받음 

'버튼을 누르면 서버에서 랜덤 텍스트를 받아와서 화면에 뿌리는' 앱이다.

구글에서 적극적으로 권장하는 AAC를 이용한 MVVM 패턴을 구현하였다.

 

AAC는 뭐고 MVVM은 무엇인가!

....는 다른 블로그에서 열심히 설명해주니 그림 한 장으로 땡치겠다.

 

▼AAC를 이용한 아키텍처 도식화

 

아.. 위의 그림에는 Observer를 통해 LiveData를 관찰(구독)하라고 되어있는데

나는 하는 김에 DataBinding으로 대체하였다.

 

위의 방식까지만 하고 싶으면 DataBinding은 하지 말고 액티비티에 아래처럼 해 주면 된다.

viewModel.fact.observe(new Observer<String>() {
    void onChange(String s) {
       //갱신 시 할 작업
    }
}

findViewById(R.id.button).setOnClickListener(new OnClickListener() {
    void onClick(View v) {
        viewModel.getData();
    }
}

 

작동 방식은 사실 MVP랑 뭐가 다른지.. 잘 모르겠다 ㅜ.ㅜ

MVP는 '야 해줘 => 야 해줘 => 했어 => 했어 => ㅇㅋ'였고

MVVM은 '야 해줘 => 야 해줘 => (다했다) => ㅇㅇ봤음 => ㅇㅇ봤음' 인 것 같기도..?

 

 


 

 

전체 소스는 아래 참고

https://github.com/YelanJeon/PatternTest/tree/aac_mvvm

 

GitHub - YelanJeon/PatternTest: 디자인 패턴 공부

디자인 패턴 공부. Contribute to YelanJeon/PatternTest development by creating an account on GitHub.

github.com

 

사실 이게 MVVM 패턴에 맞게 개발한건지 모르겠다.

MVVM 패턴의 ViewModel과 AAC의 ViewModel은 다른 거라고 들었기 때문이다.

음 좀 더 공부해서 pure MVVM을 구현하도록 해야겠다 ㅜㅜ

'개발 > 컴퓨터과학' 카테고리의 다른 글

관심사, 관심사 분리, 의존성  (0) 2022.12.06
디자인 패턴 공부 예제 -1 :: MVP  (2) 2022.12.05

이번에는 MVP 패턴을 구현한 예제를 가지고 왔다.

MVP가 뭐냐!

...는거는 다른 블로그에도 많으니 나는 생략하기로 함.

 

예제는 '버튼을 누르면 서버에서 랜덤한 텍스트를 받아서 화면에 뿌려주는' 간단한 앱이다.

JAVA 언어로 되어있고 DataBinding이나 ViewBinding은 사용하지 않았다!

 

전체 소스는 아래 링크 참조!

 

https://github.com/YelanJeon/PatternTest/tree/mvp

 

GitHub - YelanJeon/PatternTest: 디자인 패턴 공부

디자인 패턴 공부. Contribute to YelanJeon/PatternTest development by creating an account on GitHub.

github.com

 

 

MVP 1번이 있고 2번이 있는데,

1번 방식으로도 할 수 있고 (모델에서 서버 통신)

2번 방식으로도 할 수 있다 (프레젠터에서 서버 통신)

 


MVP를 예를 들자면...

 

뷰 : 야 뭐 해줘

프레젠터 : ㅇㅇ.. 모델아 이거 해

모델 : 했어

프레젠터 : 뷰야 여기

뷰 : ㄳㄳ

 

이런 식이라고 볼 수 있다고...

 

추가로 궁금한 점 있으면 댓글 달아주세요 :)

+ Recent posts