안드로이드(Kotlin)

    Kotlin 코틀린의 DI(의존성 주입)

    Kotlin 코틀린의 DI(의존성 주입)

    최근 회사에서 진행하는 프로젝트에서 클린 아키텍처로 진행을 하고 있다. 그러면서 자연스럽게 DI를 적용하고 있는데 이번에 DI에 대해서 DI를 쓰는 이유와 그 장점에 대해서 자세히 정리하려고 한다. DI(의존성 주입) 이란? DI(Dependency Injection)는 의존성 주입이라는 뜻으로, 객체 지향 프로그래밍에서 발생하는 객체 간 의존 관계를 효과적으로 관리하기 위한 방법 중 하나이다. 우리는 이런 DI를 왜 사용해야 할까? DI의 장점 1. 코드 재사용성 향상 DI를 사용하면 객체 간의 의존 관계를 직접 관리하지 않고, 외부에서 주입받기 때문에 객체의 재사용성이 향상된다. 또한 의존성을 주입하는 코드는 모듈화가 용이하며, 다른 클래스에서도 동일한 방식으로 의존성을 주입할 수 있다. 2. 유연성..

    Kotlin 코틀린의 Sealed Class

    Kotlin 코틀린의 Sealed Class

    Kotlin sealed class 란? 코틀린에서 sealed class는 다른 클래스가 상속을 받지 못하도록 제한하는 클래스이다. 이 클래스는 클래스 계층 구조에서 제한된 개수의 클래스를 나타낼때 사용하게 된다. sealed class Result { data class Success(val data: T) : Result() data class Error(val exception: Exception) : Result() } sealed class의 특징을 정리하면 다음과 같다. sealed class의 특징 1. 상속을 제한한다. sealed class는 다른 클래스에서 상속을 받지 못하도록 제한합니다. 그렇기 떄문에 sealed class의 하위 클래스는 sealed class의 내부에서 정의되어..

    Kotlin 코틀린의 Flow

    Kotlin 코틀린의 Flow

    최근 회사에서 안드로이드 개발을 하면서 Flow와 stateflow를 많이 사용하면서 개발을 진행하고있다. 오늘은 Flow와 Stateflow에 대해서 내가 알고있는것을 자세히 정리하려고한다. 기존에는 코틀린의 LiveData, RxJava, coroutine과 flow, stateflow 사용하기 전까지는 콜백과 리스너를 통해 이벤트 발생 시 특정 동작을 수행하는 역할을 개발해왔다 하지만 리스너를 사용하게 되면 코드가 복잡해지고 가독성이 떨어지며 메모리 누수와 같은 문제가 발생할 수 있었다 이후 LiveData , RxJava와 같은 반응형 프로그래밍 라이브러리들이 나오게 되었고 더 나아가 코루틴과 Flow가 나오게 되면서 이러한 문제들을 해결할 수 있었다. 최근 나같은 경우는 데이터의 변화에 따른 ..

    Kotlin 코틀린의 Coroutine

    Kotlin 코틀린의 Coroutine

    * Coroutine의 개념 코루틴은 1958년 멜빈 콘웨이가 처음 제창했다고 하는 개념으로 현재 여러 프로그래밍 언어에 구현되어 있으며 코틀리만의 고유한 개념은 아니다. 프로그래밍에서 루틴이란 프로그램의 흐름을 추상적으로 일컫는 말이다. 루틴은 크게 메인루틴과 서브루틴으로 나눌수있는데, 예를들어 main함수에 의해 수행되는 프로그램의 흐름을 메인루틴이라고 한다면, main함수 안에서 실행되는 개별 함수들에 의해 수행되는 흐름을 서브루틴이라 비유할 수 있다. 루틴의 한 종류인 함수는 호출을 함으로써 그 내부에 진입하여 내부에서 처리를 수행하고, 처리가 끝나면 함수도 종료되는 구조를 가지고 있기 때문에 보통은 루틴이 일직선적인 흐름을 가지고 있다고 할 수 있다. 그런데 코루틴의 특징은 이 일직선적인 흐름을..

    Kotlin 코틀린의 object VS companion object

    Kotlin 코틀린의 object VS companion object

    object VS companion object 코틀린은 싱글톤 클래스를 생성하기 위해 object declaration이라는 것을 사용한다. 싱글톤 클래스로 선언해야 할 경우에 클래스 명 앞에 class 대신 object를 사용함으로써 싱글톤 클래스를 생성하게 된다. 하지만 공부를 하다보면 companio object라는 것을 볼 수 있다. object와 companion object는 무엇이 다른지 알아보자. 1. object object는 크게 2가지로 사용된다. 1. object expression (객체 표현식) 2. object declaration (객체 선언) - 동반 객체(객체 선언을 클래스 내부에 사용한 것) 여기서 싱글톤 클래스를 생성하기 위해 사용되는 object의 쓰임은 2번째인 ..

    Kotlin 코틀린의 싱글톤(Singleton)

    Kotlin 코틀린의 싱글톤(Singleton)

    싱글톤 1. 싱글톤 정리 싱글톤이란 어떤 클래스가 최초 한번만 메모리를 할당하고 그 메모리에 객체를 만들어 사용하는 디자인 패턴을 말한다. 즉 생성자의 호출이 반복적으로 이루어 지더라도 실제로 생성되는 객체는 최초에 생성된 객체를 반환해 주는 것이다. 객체를 생성할 때 생성자가 호출되고 메모리에 올라가는 등 비용이 발생하게 된다. 만약 객체를 생성하는 비용이 크다고 한다면, 객체를 자주 생성하는 일은 시스템에 큰 부담을 가져올 수 있다. 싱글톤 패턴은 객체를 한번만 생성하고 생성된 객체를 재사용 하면서 객체의 재생성 비용을 줄이는 패턴이다. 하지만 여기서 고려해야될 점이 있다. 1. 인스턴스화 하는 비용을 줄일 수 있다는 장점을 가지고 있지만, 한번 생성한 인스턴스를 반납하지 않기 때문에 무분별한 싱글톤..

    Kotlin 코틀린의 object와 class 키워드

    Kotlin 코틀린의 object와 class 키워드

    object와 class 코틀린에서 클래스를 정의하는 키워드는 class 이다. 하지만 간혹 object 키워드를 이용하여 클래스를 정의하는것을 종종 볼 수 있다. object 키워드를 이용하여 클래스를 정의하면, 싱글턴 패턴이 적용되어 객체가 한번만 생성되도록 한다. object키워드는 이러한 싱글톤을 사용하는 방법 이외에도 익명객체를 생성할 때도 사용된다. 위 내용을 정리하면 object 키워드는 다음과 같은 두가지 용도로 사용된다. 1. 싱글턴 클래스를 만들때 2. 익명 클래스 객체를 생성할 때 1. object키워드를 이용하여 싱클턴 클래스 만들기 object로 싱클턴 클래스를 정의할 수 있다. 아래 코드처럼 CarFactory 클래스를 만들때 class 키워드 대신 object 키워드를 사용하면..

    Kotlin 코틀린의 Retrofit

    Kotlin 코틀린의 Retrofit

    더보기 본 포스팅은 FastCampus - 30개 프로젝트로 배우는 Android 앱 개발 with Kotlin 초격차 패키지 를 바탕으로 학습된 내용을 요약 및 정리한 글입니다. Retrofit 1. Retrofit 이란? Retrofit 이란 간단하게 말하면 서버와 클라이언트 간 HTTP 통신을 할 수 있도록 도와주는 녀석이다. 우리들이 흔히 어플을 만들때 오픈API을 이용하여 데이터 정보를 가져오게 되는데 그때 Retrofit을 이용하면 편하게 코드를 작성할 수 있다. 물론 Retrofit을 사용하지 않더라도 HttpClient, Volley, OKhttp 등 통신을 편하게 할 수 있도록 도와주는 라이브러리 들이 존재 했었지만 요즘은 전부 Retrofit을 이용하는 추세이므로, HTTP 통신을 할때..