Dagger Hilt를 사용할 때, @Binds와 @Provides의 차이
·
개발/소프트웨어 디자인 패턴
의존성을 주입할 때 Hilt에는 두가지 방법이 있다.@Binds와 @Provides이 두가지는 어떤 차이점이 있을까?1️⃣ @Binds와 @Provides의 공통점둘 다 의존성 주입에서 객체를 제공하는 역할을 한다.즉, @Provides와 @Binds 모두 Hilt(Dager)가 어떤 객체를 사용할지 알 수 있도록 도와준다.2️⃣ 차이점✅ 객체 생성 방식@Provides : 메서드에서 객체를 직접 생성 (return 사용)@Binds : 이미 생성된 객체를 인터페이스에 바인딩@Module@InstallIn(SingletonComponent::class)object NetworkModule { @Provides fun provideRetrofit(): Retrofit { return..
UseCase 사용의 이유, ViewModel에서 Repository를 직접 연결하면 안될까?
·
개발/소프트웨어 디자인 패턴
Nia 프로젝트를 참고하여 Network 모듈을 만들고 API를 연결하고 있었는데,ViewModel에서 어떤건 Repository를 직접 연결하고 어떤건 UseCase를 이용하여 통신을 했다.그렇다면 이 두개는 어떤 기준으로 달라진걸까?1. Repository는 언제 사용하는가?Repository는 “데이터를 어떻게 가져올 것인지”에 대한 역할을 한다.따라서 Repository를 바로 연결하는 것은 단순 데이터 조회인 경우에 사용할 수 있다.1️⃣ 구조ViewModel → Repository → DataSource (API, DB 등)2️⃣ 장점구조가 단순하여 코드가 직관적이다.작은 규모의 프로젝트에서 빠르게 개발할 수 있다.3️⃣ 단점ViewModel이 비즈니스 로직을 직접 다루게 되어 책임이 증가함...
비즈니스 로직이란? 개발자가 꼭 알아야 할 핵심 개념 정리
·
개발/소프트웨어 디자인 패턴
프로젝트 작성 시 Clean Architecture를 기반으로 작성을 하고 있다.이 때, 비즈니스 로직은 Domain 계층에 있는 UseCase가 담당한다.그렇다면 여기서 말하는 비즈니스 로직은 무엇일까?0. 비즈니스 로직이란?비즈니스 로직(Business Logic)은 소프트웨어가 비즈니스 목표를 달성하기 위해 수행하는 핵심적인 규칙과 연산을 담당하는 부분이다.즉, 사용자의 입력을 받아 데이터 처리 후 결과를 반환하는 과정에서 "어떤 데이터를 어떻게 처리할지" 결정하는 로직이다.1. 비즈니스 로직의 역할비즈니스 로직은 단순한 데이터 저장/조회가 아니라, 도메인 규칙을 적용하고 데이터를 가공하는 역할을 한다.예시 1: 온라인 쇼핑몰 주문 시스템사용자가 장바구니에 상품 추가주문 요청 시 결제 금액 검증 (..
설계 패턴에서 Interface와 implementation을 쓰는 이유
·
개발/소프트웨어 디자인 패턴
아키텍처 설계를 하는데 굳이 Interface와 구현 클래스를 나누는 이유는 무엇일까 궁금해졌다.Kotlin에서는 이것이 일반적인 방식의 설계 패턴인데, 유연한 구조를 만들고 유지보수가 편해진다.1️⃣ 유지보수 & 확장성예제 1: 인터페이스 없이 직접 구현한 경우class LoginRepository @Inject constructor( private val api: LoginNetworkApi) { suspend fun getLoginData(): LoginClientModel { return api.getLoginData() }}이렇게 하면 LoginRepository 안에서 직접 LoginNetworkApi를 사용하니까 나중에 구현을 바꾸기 어려움예제 2: interfa..
싱글톤(Singleton) 패턴과 Kotlin에서 object 객체
·
개발/소프트웨어 디자인 패턴
🌟 들어가기 전요즘 메모리 최적화 이슈에 대해 관심이 많다.그렇게 메모리에 대해서 보다가 유독 눈에 띄는 게 있었다. 바로 Kotlin에서 Object 객체 !! 늘 그냥 쓰라니까 써왔던.익숙하지만 낯선. 그 존재에 대해 파헤쳐봤다. 🔍 세부 내용1. 싱글톤 패턴(Singleton Pattern)싱글톤 패턴은 객체의 전역적 유일성을 보장하는 디자인 패턴이다.이를 통해 하나의 인스턴스만 사용하며, 여러 곳에서 동일한 객체를 공유하거나 관리할 수 있다.전역상태 관리: 애플리케이션에서 하나의 상태를 유지하고 여러 곳에서 공유할 때 사용 (ex. 로그인 세션, 앱 설정, DB 연결)자원 절약: 객체가 여러번 생성되지 않도록 보장하여 메모리 사용 절감일관된 상태 유지: 하나의 인스턴스를 통해 상태를 일관되게 ..
보일러 플레이트 코드 (Boilerplate Code)
·
개발/소프트웨어 디자인 패턴
🌟 들어가기 전언젠가 언뜻 들어봤던 보일러 플레이트 코드.개발자가 가장 싫어한다는 중복된 코드라길래 막연하게 무의미하게 반복되는 코드를 예상했다.그러나 예시를 찾아보면 정작 필요한 소스코드였다.그래서 정확하게 어떤 느낌이며, 해소할 수 있는 방법은 무엇인지 찾아보았다.🔍 세부 내용보일러 플레이트 코드란?특정 기능을 구현하기 위해 반드시 작성해야 하는 형식적이고 반복적인 코드이다.보일러 플레이트라는 이름이 붙여진 이유보일러 플레이트는 철강 산업에서 보일러를 만들 때 사용되는 표준화 된 철판을 의미한다.이렇게 표준화 된 철판이 있으니 대량 생산이 가능하고, 크기나 형태가 일정해 여러 장비에서 재사용 될 수 있었다.그래서 소프트웨어 개발에서도 반복적이고 표준화 된 코드를 가리키는 용어로 사용되기 시작했다...
MVVM 패턴
·
개발/소프트웨어 디자인 패턴
MVVM패턴이란? View - ViewModel - Model View: 사용자에게 보이는 화면 ViewModel: View를 표현하기 위해 만든 View를 위한 Model && View를 나타내주기 위한 데이터 처리 담당 Model: 어플에서 사용되는 데이터 및 데이터 조작 부분 (ex. 서버에서 들어오는 데이터) 동작순서 사용자의 Action이 View를 통해 들어옴 Command 패턴을 이용해 ViewModel에 Action을 전달 ViewModel이 Model에서 데이터를 요청하고, Model은 ViewModel에서 요청받은 데이터를 전달 ViewModel은 응답받은 데이터를 가공 및 저장 View는 ViewModel과의 Data Binding을 이용해 화면 갱신 특징 View와 Model 사이 ..
뿌꾸 빵
'개발/소프트웨어 디자인 패턴' 카테고리의 글 목록