글

라벨이 MVVM인 게시물 표시

[Android] 디자인패턴 5 - MVVM패턴

이미지
MVVM패턴이란? 참고 https://medium.com/@jsuch2362/android-%EC%97%90%EC%84%9C-mvvm-%EC%9C%BC%EB%A1%9C-%EA%B8%B4-%EC%97%AC%EC%A0%95%EC%9D%84-82494151f312 mvp패턴에서 presenter의 문제점이 있다.  컨트롤러와 마찬가지로 시간이 지남에 따라 추가되는 비즈니스 로직이 모이게 된다. 시간이 흐르면 거대하고 다루기 어렵고 문제가 발생하기 쉽고 분리하기 어려운 presenter를 발견하게 된다. *신중한 개발자라면 앱의 변화에 맞춰 해결해 나갈 수 있다.  - Model, View, ViewModel의 약자 - 뷰와 모델을 연결하기 위해 사용해야하는 연결 코드 감소 - MVP에서 파생된 패턴 - Microsoft에 의해 제안된 패턴 *Model : MVC, MVP와 동일하다. *View : ViewModel에 의해 보여지는 Observable변수와 액션에 유연하게 바인딩된다. *ViewModel : Model을 래핑하고 View에 필요한 Observable 데이터를 준비한다.                   -> View가 Model에 이벤트를 전달하도록 Hook을 준비한다.                   -> ViewModel은 View에 종속되지 않는다. 이미지1 MVVM 관계도 *View와 ViewModel의 관계 - ViewModel은 Model을 알지만 View를 알지 못한다. - View는 Model을 알지 못하지만 ViewModel은 알 수 있다. - View는 ViewModel을 관찰하고 있다가 변화가 감지되면 화면을 갱신한다. DataBinding : View와 ViewModel 독립  ...

[Android] 디자인패턴 1 - 디자인패턴이란?

이미지
디자인 패턴 mvc - mvp - mvvm을 사용해보기위해 공부해보니 안드로이드 개발 시 사용하는 디자인패턴이라는 것을 알게되었다.  그렇다면 먼저 디자인 패턴에 대해 공부를 해봐야 할 것 같아서 찾아보기 시작했는데 공부해야 할 것이 너무 많다... 앞으로 꾸준히 해야 한다고 생각하고 여기서는 간단하게 개념만 정리한 후 예제를 만들고 실제 프로젝트에 적용해보면서 공부해 나가도록 하겠다.  디자인패턴이란 무엇인가? - 여기서 다루는 디자인패턴이란 '소프트웨어 공학'의 개념이다. - 프로그래밍할 때 다양한 문제 상황에 대한 재사용 가능한 해결책이다.   *일반적인 문제를 해결하기 위해 최선의 방법을 공식화 혹은 정의 하는 것   - 패러다임과 알고리즘과는 다르다.   * 객체지향 패러다임이든 함수형 프로그래밍 패러다임이든 문제상황은 일관되기에 패러다임과 디자인패턴은 동의어가 될 수 없다. 또한 어떠한 알고리즘이라도 마찬가지로 문제상황은 일관되기 때문에 알고리즘과도 동의어가 될 수 없다. 디자인패턴은 일반화된 해결책이다.  - 디자인 패턴은 객체지향 패러다임의 개념이 아니다.   * 디자인 패턴에 대한 내용을 보면 객체지향 패러다임에 국한된 내용들이 많은데 엄밀히 말하면 아니다. 디자인 패턴이 반드시 객체지향에 적합해야 할 필요는 없다. 다만 객체지향이 굉장히 유용한 패러다임이기 때문에 이에 대한 연구가 더 많이 진행되었던 것이다.  - Creational(창조), Structural(구조), Behavioral(행동)으로 구분한다.  * 클래스와 인스턴스에 관한 생성, 구조화, 행동과 관련있다. 여기서 디자인 패턴이 객체지향에 초점을 맞추고 있음을 알 수 있다. Creational patterns - 'Creat'이라는 어미에 맞게 클래스의 인스턴스를 만드는 것과 관련있다. - Class creation patterns : 상속을...