MVC Pattern
💡 디자인패턴 중에 하나인 MVC 패턴에 대하여 학습하였습니다 ! MVCMVC는 Model, View, Controller의 약자로 하나의 애플리케이션이나 프로젝트를 구성할 때 구성요소를 세가지 역할로 구분한 패턴입니다.사용자가 controller를 조작하면 controller는 model을 통해서 데이터를 가져옵니다.그 데이터를 바탕으로 시각적인 표현을 담당하는 View를 제어하혀 사용자에게 전달합니다.MVC의 특징MVC 패턴을 적절하게 사용하면, 사용자 인터페이스로부터 비즈니스 로직을 분리할 수 있습니다.애플리케이션의 시각적인 요소와 실행되는 비즈니스 로직을 서로 영향 없이 쉽게 고칠 수 있는 애플리케이션을 만들 수 있습니다.ModelData와 애플리케이션의 내부 비즈니스 로직을 처리하기 위한 역할..
- [Android] Architecture/Architecture Pattern
- · 2024. 8. 30.
[Android, Multi Module] 멀티 모듈을 위한 구조 설계
다중 모듈 탐색 권장사항유연성을 통해 탐색 그래프를 결합하여 앱의 완전한 탐색 그래프를 구성할 수 있다.- 단일 대상 활용 (fragment)- 일련의 관련 대상을 캡슐화하는 중첩 그래프- 중첩된 것처럼 다른 탐색 그래프 파일을 삽입할 수 있는 요소 활용 아래 예는 각 기능 모듈이 한 기능에 중점을 두고 이 기능을 구현하는 데 필요한 모든 대상을 캡슐화하는 단일 탐색 그래프를 제공한다.프로덕션 앱에는 이 상위 수준 기능 모듈의 구현 세부정보인 하위 모듈이 하위 수준에 여러 개 있을 수 있다.이러한 모듈은 간접적으로 App 모듈에 포함되어 진다. 각 기능 모듈은 자체 탐색 그래프와 대상이 있는 독립된 단위이다. (내비게이션 메뉴)app 모듈은 각각에 종속되므로 아래와 같이 build.gradle 파일에..
- [Android] Architecture/[Android] Multi Module
- · 2023. 7. 29.
[Android, Multi Module] 멀티모듈 구성
일반적인 모듈화 패턴 멀티 모듈로 프로젝트를 구성할 때, 모든 프로젝트에 맞는 하나의 모듈화 전략은 없다. Gradle의 유연한 특성으로 인해 프로젝트를 구성하는 방법에는 제약이 없으며, 다중 모듈로 Android 앱을 개발할 때 일반적인 규칙과 공통 패터만 지킨다면 자신만의 모듈화 전략을 세울 수 있다. 규칙1. 높은 응집력 및 낮은 결합력 원칙 가장 중요한 방법은 결합력 및 응집력 속성을 사용하는 것이다. 결합력은 모듈이 서로 종속된 정도를 측정하고, 응집력은 단일 모듈의 요소가 기능적으로 관련된 방식을 측정한다. 일반적으로 결합력은 낮추고 응집력은 높여야 한다. [낮은 결합력] - 모듈이 최대한 서로 독립적이어야 한다. - 한 모듈의 변경사항이 다른 모듈에 미치는 영향이 없거나 최소화 되어야 한다...
- [Android] Architecture/[Android] Multi Module
- · 2023. 7. 29.
[Android, Multi Module] 멀티모듈의 개념과 장단점
모듈화 ! 증가하는 코드베이스 문제 코드베이스에서 확장성, 가독성 및 저반적 코드 품질은 시간이 지남에 따라 감소하게 된다. 그 이유는 코드베이스 규모가 커지고 있음에도 불구하고 유지관리 담당자가 쉽게 유지관리할 수 있는 구조를 적용하기 위한 적극적인 조치를 취하지 않기 때문이다. 모듈화를 통해서 유지관리 가능성을 개선하고, 이러한 문제를 방지할 수 있는 방식으로 코드베이스를 구조화하는 방법이다. [모듈화] 모듈화는 코드베이스를 느슨하게 결합된 독립적인 부분으로 구성하는 방법이다. 각 부분이 모듈에 해당하며, 각 모듈은 독립적이며 명확한 역할을 한다. 하위 문제를 해결하기 위해 문제를 더 작고 쉬운 문제로 나누면, 대형 시스템 설계와 유지보수의 복잡성이 감소한다. 위 이미지는 다중 모듈 코드베이스에 종속..
- [Android] Architecture/[Android] Multi Module
- · 2023. 7. 29.
[DI,Android] Dagger2, Hilt 없이 의존성 주입 사용해보기
스터디 목적 DI의 원리를 이해하기 위해서 Dagger2와 Hilt 같은 의존성 라이브러리 없이 로그인 플로우를 구현하는 방식을 배운다. 의존성 라이브러리를 사용하지 않고 구현했을 경우, 차이점과 필요성을 알 수 있다. 우선 프로젝트 구조는 아래와 같다. [ Login Activity ] - > [ Login ViewModel ] - > [ UserRepository ] - > [ UserLocalDataSource ] - > [ UserRemoteDataSource ] - > [ Retrofit ] Login Activity에서 사용자가 데이터에 접근하면, Login ViewModel에 접근할 수 있다. Login Viewmodel은 userRepository를 생성해서 기능을 사용하게 되는데, use..
- [Android] Architecture/[Android] DI
- · 2023. 7. 25.
안드로이드 의존성 주입과 Hilt (2)
Hilt의 주요 Annotaion 1>HiltAndroidApp 기존의 컴포넌트 생성은 아래의 코드와 같이 onCreate()에서 컴포넌트를 인스턴스화 하였다. hiltAndroidApp 어노테이션만 추가함으로써 컴포넌트를 인스턴스화 할 수 있다. 이 때 의존성 주입은 super.onCreate()에서 이루어진다. 바이트코드 변환 때문에 onCreate에서 컴포넌트 인스턴스 생성이 가능해진다. HiltAndroidApp은 Hilt 코드 생성을 시작하고 반드시 Application 클래스에 추가해야 한다. [ByteCode Transformation] 바이트 코드 변환을 통해서 MemoApplication 클래스는 Hilt_MemoApplication을 상속받을 필요 없이, Application() 상속만..
- [Android] Architecture/[Android] DI
- · 2023. 6. 25.