콜백 / 싱글톤 패턴

hui·2023년 10월 22일

AndroidStudy

목록 보기
7/7

콜백이란?

call back: 어떤 함수의 파라미터로 들어오는 함수.

비동기 처리 패턴은 기본 스레드를 차단하지 않고 장기 실행 작업을 수행하기 위한 방식이다. 이 패턴에서, 작업을 백그라운드 스레드에서 시작하고, 작업이 완료되면 기본 스레드에 결과를 알리는 콜백을 호출. 후에 이벤트에 대한 처리가 가능하다.

ex) 클릭리스너 : 클릭을 감지하면 onCLickListener를 호출하여 이벤트 처리. 외에 에러처리, 데이터 로딩, 쓰레드 작업 등 여러 사용.

→ 비동기로 실행되기 때문에 많이 사용하면 코드를 읽기 힘들며 추론 힘듬.

싱글톤 패턴이란?

singleton pattern: 객체의 인스턴스를 한개만 생성되게 하는 패턴.

싱글턴 패턴이란 반복적으로 일어나는 문제들을 어떻게 풀어나갈 수 있는지 방법을 만들어 둔 디자인 패턴 중 하나이다.

왜 사용하는 걸까?

  • 인스턴스를 많이 만들면 불필요한 자원 메모리가 많아진다.
  • 이미 생성된 인스턴스를 활용하며 속도 측면에서 좋다.
  • 전역으로 사용되는 인스턴스이므로 다른 여러 클래스에서 데이터를 공유하며 사용.

→ 다른 클래스의 인스턴스들 간에 결합도가 높아져 객체 지향 설계에 어긋나며 수정이 어려워지고, 멀티쓰레드 환경에서 동기화 처리를 안하면 인스턴스가 2개 생성될 수도 있는등 문제가 발생.

→ 다른 클래스의 인스턴스들 간에 결합도가 높아져 객체 지향 설계에 어긋나며 수정이 어려워지고, 멀티쓰레드 환경에서 동기화 처리를 안하면 인스턴스가 2개 생성될 수도 있는등 문제가 발생.

싱글톤, 구현해보자!

class DBHandler private constructor(context: Context) {
    companion object {
        private var instance: DBHandler? = null

        fun getInstance(context: Context) =
            instance ?: DBHandler(context).also {
                instance = it
            }
    }
}

private를 이용해 외부에서 생성자에 접근하지 못하게 막고, getInstance를 통해야만 인스턴스를 만들 수 있게 함. 후에 instance를 확인해 값이 없으면 새로 만드록,

그렇지 않으면 기존값을 반환하는 구조이다. 이 때 생성자는 context를 전달받을 수 있게 구성하였다.

profile
백엔드 개발자로 변신.

0개의 댓글