Notice
Recent Posts
Recent Comments
Link
- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 안드로이드
- github
- webflux
- n3문법
- Android
- 진짜학습지후기
- rxjava
- coroutine
- 책추천
- 일본어기초
- ai
- CustomTab
- 일본어문법
- errorhandling
- pullrequest
- posting
- jlpt
- KotlinInAction
- 학습지
- 진짜일본어
- GIT
- 책리뷰
- 인공지능
- androidstudio
- 진짜학습지
- Kotlin
- blog
- PR
- 코틀린
- suspend
Archives
코딩하는 개굴이
Singleton 패턴에 대하여 본문
반응형
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