본문 바로가기

Android/Architecture

(15)
[Android] Coordinator Pattern 클린 아키텍처 구조에 대해서 공부하던 도중, 동료 ios 개발자에게 Coordinator Pattern 이라는 것을 들었다. ios 개발에 있어서 주로 사용하는 디자인 패턴으로 보이지만, 프로젝트를 모듈화 시켰을 때, 해당 디자인 패턴을 사용하여 화면(Activity)간의 이동을 한다면 조금 더 깔끔하게, 의존성 문제 없이 모듈화를 진행할 수 있을 것이라 생각하여 해당 디자인 패턴에 대해 알아보고자 한다. 안드로이드에서는 해당 디자인 패턴을 사용하지 않기 때문에 안드로이드 기준의 자료는 거의 존재하지 않는 것으로 보인다. 따라서, swift(IOS) 에서 사용하는 Coordinator Pattern 의 글을 참고하여 기본 개념에 대해서 알아보았다. 우선, Coordinator Pattern 을 사용하는 ..
[Android] Clean Architecture 실전 압축 정리 - Data Flow 필자가 클린 아키텍처에 대한 개념을 공부하고, 예제를 만들면서 가장 헷갈렸던 부분이 데이터의 흐름이 어떻게 되는지에 대해서 이다. 다중 모듈(3개 밖에 되지 않지만) 구조를 처음 만들어 보았기 때문일 수도 있겠지만, 어디에서는 인터페이스, 어디에서는 구현부, 어디에서는 실 사용 하는지 명확하게 이해하지 못했기 때문이다. 그에 따라서, 해당 내용을 복기 할 겸 정리해보고자 한다. 클린 아키텍처에서 데이터의 흐름이라고 하면 Data 모듈에서 Local 혹은 Remote 에서 구해 온 데이터를 어디로 전달하여 어떻게 실제로 사용하는지 에 대한것이 메인이 아닐까 생각한다. 그렇다면, 모듈로 보았을 때 데이터의 흐름은 어떻게 되는 것인가? 필자는 이런식으로 생각하고 이해하였다. 간단하게 생각해 보았을 때, 사용자..
[Android] Clean Architecture 실전 압축 정리 - 예제 처음 학습하면서 작성한 글입니다. 필요시 추후 내용을 수정할 예정입니다. 틀린 부분이 있으면 언제든 지적해주면 감사하겠습니다 :) 해당 게시글에 사용되는 예제 코드는 gitHub 에 업로드 해두었습니다. https://github.com/HeeGyeong/CleanArchitectureSample GitHub - HeeGyeong/CleanArchitectureSample Contribute to HeeGyeong/CleanArchitectureSample development by creating an account on GitHub. github.com 저번 개념 정리 게시글에 이어서, 실제 예제를 보면서 어떤식으로 Clean Architecture 가 구현되는지 확인해보자. 클린 아키텍처의 개념에 ..
[Android] Clean Architecture - UseCase 란 ? 처음 학습하면서 작성한 글입니다. 필요시 추후 내용을 수정할 예정입니다. 틀린 부분이 있으면 언제든 지적해주면 감사하겠습니다 :) Clean Architecture 를 공부하는 도중에, UseCase 라는 것을 domain layer 에서 사용하는 것을 보았다. UseCase 가 무엇이길래 이것을 사용하는 것인지 알아보자. UseCase 란 ? 서비스를 사용하고 있는 사용자(User)가 해당 서비스를 통해 하고자 하는 것을 의미한다. 즉, 블로그 라는 서비스가 있다고 가정해보자. 사용자는 블로그에 들어와서 보고 싶은 게시글을 '검색' 할수도 있고, '댓글'을 남기거나 '공유' 버튼을 누르는 등 다양한 행동을 수행할 수 있다. 이러한 사용자가 서비스에서 수행하고자 하는 것들이 UseCase 라고 할 수 있..
[Android] Clean Architecture 실전 압축 정리 - 개념 처음 학습하면서 작성한 글입니다. 필요시 추후 내용을 수정할 예정입니다. 틀린 부분이 있으면 언제든 지적해주면 감사하겠습니다 :) 클린 아키텍처를 공부하다 보면 모든 블로그에서 다음과 같은 이미지를 볼 수 있었다. 이게 뭔데 다들 이것만 올리는건데? 이게 뭔데 다들 이것만 올리는건데? 필자는 해당 이미지를 가장 처음 보았을 때 이런 생각이 먼저 들었다. 이는 Clean Architecture 에 대한 개념이 없이 해당 그림만 보면 이해가 안되는 것이 당연한 것이다. (어느정도 공부하고 봐도 헷갈리는건 마찬가지다) 그래서 교과서적인 개념 정리보다는, 필자가 공부하고 예제를 만들어 보면서 이해한 대로 정리해보려고 한다. 교과서적인 개념 정리가 필요하면, 다른 정리가 깔끔하게 된 블로그들이 많으니 참고하길 바..
[Android] 싱글톤(Singleton) 패턴 싱글톤 패턴 최초 한번만 메모리를 할당하고 그 메모리에 인스턴스를 만들어 사용하는 디자인 패턴. 싱글톤 패턴을 사용하는 이유 고정된 메모리 영역을 얻어 사용하며, 최초의 한번만 인스턴스를 만들어 사용하기 때문에 메모리 낭비를 방지. Static 으로 인스턴스를 생성하기 때문에 어디에서든 참조할 수 있어 데이터 공유가 편리하다. 싱글톤 패턴의 문제점 싱글톤 인스턴스를 사용하는 다른 객체간의 결합도가 높아져 객체 지향 설계 원칙에 어긋나게 된다. 멀티 쓰레드 환경에서 동기화 처리 등의 문제가 발생할 가능성이 있다. * 멀티 쓰레드 환경에서는 경합 상태가 발생할 수 있다. 경합 상태란 동일한 자원을 2개 이상의 스레드가 동시에 이용하려고 경합하는 상태이다. 이 때, 인스턴스가 1개 이상 생성되는 경우가 발생할..
[Android] MVC, MVP, MVVM 기본 개념 MVC 패턴 Model + View + Controller Model : 데이터와 데이터를 처리하는 부분 View : UI Controller : 사용자의 입력(Action)을 받고 처리하는 부분 MVC 패턴의 동작 순서 Controller에 사용자의 입력(Action)을 받는다. Controller에서 Action을 확인하고 Model을 업데이트(조작)한다. Controller에서 해당 Data를 보여줄 View를 선택 View는 Model을 사용하여 화면에 보여준다. 이 때, Controller는 View를 선택만하고 업데이트를 시켜주지 않기 때문에 View는 Model을 이용하여 업데이트 하게 된다. View가 업데이트 하는 방법으로는 Model을 직접 사용한다. Model에서 VIew에게 Noti..