-
Singleton Pattern(싱글턴 패턴)STUDY/디자인패턴 2024. 11. 26. 22:58
싱글턴 패턴이란?
클래스에 인스턴스가 하나만 있도록 하면서 이 인스턴스에 대한 전역 접근 지점을 제공하는 생성 디자인 패턴
구조
싱글턴 클래스는 정적 메서드 getInstance를 선언하다. 이 메서드는 자체 클래스의 같은 인스턴스를 반환한다.
싱글턴의 생성자는 항상 클라이언트 코드에서부터 숨겨져야 하고, getInstance 메서드를 호출하는 것이 싱글턴 객체를 가져올 수 있는 유일한 방법이여야 한다.
public class Database { private static Database instance; private Database() { } public static Database getInstance() { if (instance == null) { instance = new Database(); } return instance; } @Override public boolean equals(Object o) { return super.equals(o); } @Override public int hashCode() { return super.hashCode(); } }
적용
- 프로그램의 클래스에 모든 클라이언트가 사용할 수 있는 단일 인스턴스만 있어야 하는 경우
- 전역 변수들을 더 엄격하게 제어해야 하는 경우
장단점
장점
- 클래스가 하나의 인스턴스만 갖는다는 것을 확신할 수 있다.
- 인스턴스에 대한 전역 접근 지점을 얻을 수 있다.
- 싱글턴 객체는 처음 요청될 때만 초기화된다.
단점
- 단일 책임 원칙을 위반한다. 싱글톤 패턴은 인스턴스 관리와 비즈니스 로직을 하나의 클래스에서 처리하게 만들고, 이로 인해 유지보수와 확장성에 문제가 있을 수 있다,
- 다중 스레드 환경에서 여러 스레드가 싱글턴 객체를 여러 번 생성하지 않도록 특별한 처리가 필요하다.
- 싱글턴의 클라이언트 코드를 유닛 테스트하기 어려울 수 있다.
관련 : 스프링 싱글톤 vs 자바 싱글톤
'STUDY > 디자인패턴' 카테고리의 다른 글
Bridge Pattern(브리지 패턴) (0) 2024.12.08 Adapter Pattern(어댑터 패턴) (0) 2024.12.08 Prototype Pattern(프로토타입 패턴) (0) 2024.11.26 Builder Pattern(빌더 패턴) (0) 2024.11.12 Abstract Factory Pattern(추상 팩토리 패턴) (1) 2024.11.12