본문 바로가기

Android/Architecture5

Clean Architecture Clean Architecture 좋은코드란 무었을까요? 가독성이 좋은코드 ? 테스트커버리지가 높은코드 ? 여러가지 기준이 있겠지만 그중하나인 유지보수하기쉬운 코드(변화에 잘 대응할 수 있는 코드) 또한 좋은코드의 기준중 하나일 것입니다. 유지보수하기 쉬운코드는 변화에따른 코드변경이 적다는 것일것입니다. 그러기 위해서는 코드가 잘 분리되어있어야 합니다. 그방법중 하나인 Clean Architecture에 대하여 알아보도록 하겠습니다. Clean Architecture 알아보기 Robert Martin이 소개한 CleanArchitecture 다이어그램입니다. 양파모양의 4개의 Layer가 존재합니다. 가장 바깥쪽의 Frameworks & Drivers 가 사용자와 접점에 있는 Presentation이고,.. 2019. 8. 26.
MVP 패턴을 알아보기 MVP 패턴을 알아보기 MVP란?? MVC에서 파생된 디자인 패턴으로 안드로이드에서 주로 사용하고 있습니다. MVP가 나오게 된 이유는, View와 Model을 완전히 분리해서 사용하기 위함입니다. MVP는 Model의 역할인 비지니스 로직을 독립적으로 테스트할 수 있습니다. MVP 패턴의 각 구성에 대해서 자세히 알아보도록 하겠습니다. MVP 패턴정의 MVP는 위에서 말한대로 Model, View ,Presenter의 앞글자를 따서 이름이 지어졌습니다. 이 패턴의 핵심 아이디어는 사용자 인터페이스(view)와 비즈니스로직(model)을 분리하고, 서로간에 상호작용을 다른객체(Presenter)에 위임해 서로의 영향을 최소화 하는 것에 있습니다. Model 내부적으로 쓰이는 데이터를 저장, 처리 비즈니스.. 2019. 8. 19.
MVVM - ViewPager와 TabLayout MVVM - ViewPager와 TabLayout ViewPager와 TabLayout을 MVVM패턴을 적용하여 사용하는 방법을 알아보겠습니다. 아래는 적용된 사진입니다 .프래그먼트 1개로 동적으로 4개의 탭을 만들어 뷰페이저에 적용하였습니다. 그리고 뷰페이저와 탭레이아웃을연결하여 탭을 클릭하면 뷰페이저 프래그먼트가 바뀌도록 되어있습니다. 크게 MainActivity와 childFragment로 구성되어있습니다 .먼저 MainAcitivity의 레이아웃먼저 보도록하겠습니다 . activity_main.xml TabLayout과 ViewPager가 있습니다.TabLayout에는 app:setupWithViewPager 를 이용하여 뷰페이저 아이디를 넣어 연결해줍니다.ViewPager에는 addOnPageC.. 2019. 3. 26.
데이터바인딩 - 리스너바인딩하기 데이터바인딩 - 리스너바인딩하기버튼을 클릭했을때나 리스너들은 모두 뷰모델에서 처리할 수 있습니다. onClick 처럼 이름이 정해져 있는 것들은 다르게 쓰면 안되고 그대로 써야합니다.ex ) android:onClick="@{(v)->viewModel.clickEvent()}" 다른 컴포넌트 들은 setOn~Listener에서 set을 빼고 O를 소문자 o로 바꿔쓰면 작동합니다.ex) setOnNavigationSelectListener - >app:NavigationItemSelectedListener="@{viewModel::NavigationItemSelectedListener}"ex)onRangeSelectListener-> app:onRangeSelectedListener="@{calendarD.. 2019. 2. 21.
안드로이드 MVVM 패턴 안드로이드 MVVM 패턴 MVVM의 기본 구조MVVM의 기본 구조를 그림으로 표현한 것입니다. View는 ViewModel에게 클릭 이벤트, 필요한 데이터 요청등을 명시적으로 하고, viewModel이 notify 할때까지 기다리게 됩니다. 그와 동일하게 ViewModle은 통해 데이터를 요청하고 기다리게 됩니다. 각각의 컴포넌트 간 레퍼런스를 갖지 않고 단방향(View -> ViewModel -> Model)의 디펜던시만을 갖게 됩니다. ViewModelView와 Model 사이의 매개체 역할을 합니다. 즉 Model 에서 제공받은 데이터를 UI에서 필요한 정보로 가공한 뒤 View가 가져갈 수 있게 데이터 변경에 대한 "이벤트"를 보내게 됩니다 ViewModel과 View는 MVP패턴과 다르게 Man.. 2019. 1. 26.