-
[디자인 패턴] 싱글톤 패턴(Singleton Pattern)Computer Science/Design Pattern 2022. 12. 12. 23:41반응형
싱글톤패턴이란?
: 단 '하나'의 인스턴스만 생성하여 사용하는 디자인패턴
- 애플리케이션에 시작될 때, 클래스가 최초 한 번만 메모리를 할당하고 해당 메모리에 인스턴스를 만들어 지속 사용
- 생성자가 여러번 호출되더라도, 객체는 최초 호출시에만 한 번 생성되며 이후 호출부터는 이미 생성한 객체를 반환[ 구현 방법 ]
public class Singleton { // 1. static 영역에 객체를 1개만 생성 private static final Singleton instance = new Singleton(); // 2. public으로 인스턴스가 필요할 경우 static 메서드를 통해 조회만 가능하도록 허용 public static Singleton getInstance() { return instance; } // 3. 생성자를 private으로 선언하여 외부에서 객체 생성을 못하도록 막음 private Singleton() { } }
[ 장점 ]
1. 메모리 낭비 방지: 객체 생성을 한 번만 하여 이를 계속 사용하므로 메모리 낭비를 방지할 수 있다.
2. 다른 클래스의 인스턴스들과 데이터를 공유하는 것이 가능하다. (싱글톤으로 구현한 인스턴스는 전역적으로 사용 가능)[ 단점 ]
1. 구현하는 코드 자체가 많이 들어간다.
2. 싱글톤 인스턴스가 많은 데이터를 공유시키면 클래스들 간 결합도가 높아져 OCP 원칙을 위반할 가능성이 높아진다.
3. TDD(Test Driven Development)가 어렵다. (테스트는 독립적으로 실행되어야 하나, 인스턴스가 하나라 독립성이 없음)
4. 멀티스레드 환경에서 컨트롤하기 어렵다.
5. private 생성자로 자식클래스를 만들기 어렵다.
반응형'Computer Science > Design Pattern' 카테고리의 다른 글
[디자인 패턴] 프록시 패턴 (Proxy Pattern) (0) 2022.12.13 [디자인 패턴] 옵저버 패턴 (Observer Pattern) (0) 2022.12.13 [디자인 패턴] 전략 패턴 (Strategy Pattern) (0) 2022.12.13 [디자인 패턴] 팩토리 패턴 (factory pattern) (0) 2022.12.13 [디자인 패턴 Java] 디자인 패턴이란? (0) 2022.10.12