코딩하는 개굴이

Singleton 패턴에 대하여 본문

안드로이드

Singleton 패턴에 대하여

개굴이모자 2021. 2. 21. 22:41
반응형

Singleton 패턴이란

Singleton이란 어떤 클래스가 최초 한번만 메모리를 할당하고(static) 그 메모리에 객체를 만들어 사용하는 디자인 패턴으로,
생성자의 호출이 반복적으로 이루어져도 실제로 생성되는 객체는 최초 생성된 객체를 반환해 주는 것

사용 장점

  • 한번의 객체 생성으로 재사용이 가능하여, 메모리 낭비 방지
  • 싱글톤으로 생성된 객체는 전역성을 띄기 때문에 다른 객체와 공유가 용이
    • 예를들어, 그냥 생성자로 생성하는 방식이었다면 생성되는 객체가 여러개로, 동일한 객체를 공유하기 위해 번거로울 수 있으나,
      싱글톤으로 생성된 객체는 getInstance 로 부르면 하나의 객체를 공유할 수 있다.

사용 단점

  • 프로그램 전체에서 하나의 객체만을 공통으로 사용하기에, 다른 객체간의 결합도가 높아진다.
  • 싱글톤 객체를 수정할 경우 다른 곳에서 싱글톤 객체를 사용할 때 사이드 이펙트가 발생할 확률이 존재.
    • 멀티 스레드 환경에서 동기화 처리 문제 발생

Singleton의 적절한 사용

  • 멀티 스레드 환경에서의 싱글톤
    • Synchronized 를 통해 관리하여 공유 과정에서의 변화에 대응하기 위해 인터페이스의 형태로 관리
  • 단일 스레드 환경에서의 싱글톤
    • 정적 클래스의 형태로 사용하여, 클래스 로딩 단계에서 바로 초기화 되도록 한다.

간단한 사용 방법

  • instance 라는 전역변수를 static 으로 두고, 생성자를 호출하며, 인스턴스화 하지 않고 사용할 수 있게 하였다.
  • private 으로, 직접적인 접근을 불가하게 한다.
  • 생성자 또한 private 으로, new 를 이용한 객체 생성도 불가하게 한다.
  • getInstance 메서드를 이용해 해당 인스턴스를 얻어야 한다.
public class SingletonClass {
    private static SingletonClass instance = new SingletonClass();

    private SingletonClass() {}

    public static SingletonClass getInstance() {
        return instance;
    }
}

참고 링크

반응형

'안드로이드' 카테고리의 다른 글

안드로이드 앱 난독화  (0) 2021.02.21
Static 에 대하여  (0) 2021.02.21
LayoutInflater란  (0) 2021.02.21
jadx-gui 맥에서 설치하기  (0) 2021.02.21
Context란?  (0) 2021.02.21
Comments