CS/디자인 패턴
싱글톤 패턴
KDGdev
2023. 1. 24. 18:13
디자인 패턴
디자인 패턴이란 프로그램을 설계할 때 발생했던 문제점들을 해결할 수 있도록 하나의 ‘규약’ 형태로 만들어 놓은 것
중복 코드 방지, 의존성 제거, 유지 보수 개선 등 코드의 더 좋은 구조를 만드는 것을 도와주는 코드 작성방법입니다.
싱글톤 패턴
싱글톤 패턴은 이러한 디자인 패턴의 하나로 하나의 클래스에 오직 하나의 인스턴스만 가지는 패턴입니다.
사용 이유
전역변수를 사용하는 이유와 비슷합니다. 여러 개의 인스턴스를 생성할 필요가 없고 객체의 데이터를 공유해야 하는 상황에서 사용됩니다. 예를 들어 안드로이드에서는 retrofit 라이브러리를 사용할 때 retrofit builder 객체를 만들 때 사용됩니다.
장점
- 하나의 인스턴스를 다른 모듈들이 공유해서 사용하기 때문에 인스턴스를 생성하는데 드는 비용을 줄일 수 있습니다.
단점
- 해당 인스턴스를 다른 싱글톤 인스턴스로 교체해야 할 때 해당 인스턴스를 사용하는 모듈들의 코드를 전부 수정해야 하는 문제. 즉, 의존성이 높다는 문제가 있습니다. ※해당 문제는 의존성 주입으로 좀 더 느슨하게 만들 수 있습니다.
- 서로 독립적이어야 하는 단위 테스트에서 독립적인 상황을 만드려면 테스트를 할 때마다 계속해서 싱글톤 객체를 초기화해줘야 하기 때문에 불편함이 있습니다.
작성 방법
작성 방법의 예시는 다음과 같습니다.
kotlin
object Singleton {
}
java
public class Singleton {
private static Singleton instance = new Singleton();
private Singleton() {}
public static Singleton getInstance() {
return instance;
}
}
※ 잘못된 정보, 혹은 다른 의견이 있다면 댓글로 말해주세요. 감사합니다.