본문 바로가기

전체 글

(29)
의존성 주입(Dependency Injection) 코틀린 (안드로이드 공식문서를 참고하고 작성한 글입니다. 코틀린으로 설명되어 있어서 작성해봅니다.) https://developer.android.com/training/dependency-injection 의존성 주입이란? 하나의 객체가 다른 객체에 의존성을 제공해주는 기술을 의미한다. 의존성 주입 장점 의존성 주입을 하면 아래와 같은 이점이 존재한다. 코드 재활용 리팩토링하기 편함 테스팅 하기 편함 의존성 주입 방법 의존성 주입은 두가지가 존재한다. 생성자에 의한 의존성 주입 멤버변수에 의한 의존성 주입 하나씩 알아보기로 하고 일단 의존성 주입이 되지 않은 코드부터 한번 살펴보자. 공식문서를 읽다가 느낀건데 의존성 주입을 하지 않은 것은 객체간의 결합도가 높은 것과 같다. 일단 의존성 주입이 되지 않은 코드..
의존성 역전의 원칙(DIP, Dependency Inversion Principle) 상위 계층(정책 결정)이 하위 계층(세부 사항)에 의존하는 전통적인 의존관계를 반전(역전)시킴으로써 상위 계층이 하위 계층의 구현으로부터 독립되게 할 수 있다. public class CheeseBun extends Bun{ } public class EggBun implements Bun2{ } 이 원칙은 다음과 같은 내용을 담고 있다.[1] 첫째, 상위 모듈은 하위 모듈에 의존해서는 안된다. 상위 모듈과 하위 모듈 모두 추상화에 의존해야 한다. 둘째, 추상화는 세부 사항에 의존해서는 안된다. 세부사항이 추상화에 의존해야 한다. 이 원칙은 '상위와 하위 객체 모두가 동일한 추상화에 의존해야 한다'는 객체 지향적 설계의 대원칙을 제공한다.[2] 위키백과 中에서.. 나는 DIP 공부를 끝내고 나서 DIP의..
Handler, Looper, Message Handler 뭐하는 애일까? 서브 스레드에서 UI 관련 작업을 할 수 있도록 도와주는 클래스다. 안드로이드에서 ui관련 작업은 메인스레드에서만 가능하다. 스레드간의 동시성 문제 때문에 ui관련 작업에 한해서는 그렇게 하기로 정했다. 서브스레드에는 TextView에서 '로딩중' 이라는 글자를 입력하려고 하고 메인 스레드에서는 '로딩 완료!' 라는 텍스트를 입력하려고 한다고 생각한다면 그냥 마지막에 실행되는 스레드가 뭐냐에 따라서 보여지는 결과가 다를 것이다. 이런 혼돈을 막고자 메인 스레드에서만 ui 관련 작업을 할 수 있도록 설정했다. 핸들러를 사용해서 메세지를 전송하고 Message를 처리할 수 있다. 토막상식 : 스레드끼리는 메세지를 통해서 의사소통을 한다. 워커 스레드가 메인 스레드에게 메세지를 ..
안드로이드 Repository, Data Layer 디자인 패턴 Repopsitory 패턴 Repository 패턴은 앱으로부터 데이터 계층을 분리시켜주는 디자인 패턴이다. (여러 블로그에서 캡슐화 시켜준다고도 표현했다.) 데이터 레이어는 UI와 별도로 앱의 데이터와 비즈니스 로직을 처리하는 앱 부분을 나타낸다. 데이터에 접근할 수 있도록 일관된 API를 제공해준다. UI가 사용자에게 정보를 제공하는 동안 데이터 레이어에는 네트워킹 코드, Room DB, 오류처리, 데이터를 조작하는 등의 코드가 포함된다. 저장소는 데이터 소스(예: 영구 모델, 웹 서비스, 캐시) 간의 충돌을 해결하고 이 데이터의 변경사항을 중앙 집중화할 수 있다. repository 를 구현하기 위해서는 ViedeoRepository와 같은 분리된 클래스를 사용하한다. repository 클래스는 ..
Dependncy injection 참조한 글은 안드로이드 공식문서 입니다. https://developer.android.com/training/dependency-injection Android의 종속 항목 삽입 | Android 개발자 | Android Developers Android의 종속 항목 삽입 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 종속 항목 삽입(DI)은 프로그래밍에 널리 사용되는 기법으로, Android 개발에 적합합니 developer.android.com 의존성 주입을 하면 아래와 같은 이점이 존재한다. 코드 재활용 리팩토링하기 편함 테스팅 하기 편함 안드로이드에서 의존성 주입을 하기 이전에 이 섹션에서는 근본적으로 의존성 주입이 뭔지 개략적으로 설명해준다. (고마워라.. 근데..