[ 목차 ]
안녕하세요. 자바에는 다양한 디자인 패턴이 존재하고, 각 패턴은 특정한 문제를 해결하기 위해 설계되었습니다. 적절한 디자인 패턴을 사용함으로써 코드의 품질과 가독성, 유지보수성을 높일 수 있으므로 항상 상황을 고려하여 디자인 패턴을 사용하는 것이 좋습니다. 이를 통해 더 나은 소프트웨어를 개발하고 발전하는 데 기여할 수 있을 것입니다. 그래서 자바에서 흔히 사용되는 패턴들에 대해서 글을 작성해보려 합니다. 그 첫 번째로 싱글톤 패턴에 대해서 알아보겠습니다.
1. 싱글톤 패턴이란?
싱글톤 패턴은 객체를 한 개만 생성하는 디자인 패턴입니다. 싱글톤 패턴을 사용하면 객체를 전역으로 공유할 수 있으며, 객체를 여러 스레드에서 안전하게 사용할 수 있습니다.
2. 싱글톤 패턴 구현 방법
싱글톤 패턴을 구현하는 방법은 다음과 같습니다.
- 클래스의 생성자를 private로 선언합니다.
- 클래스의 인스턴스를 저장하는 static 필드를 선언합니다.
- 클래스의 인스턴스를 생성하는 static 메소드를 선언합니다.
다음은 자바에서 싱글톤 패턴을 구현한 클래스입니다
public class Singleton {
private static Singleton instance;
private Singleton() {}
public static Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
이 클래스를 사용하려면 다음과 같이 getInstance() 메서드를 호출합니다.
Singleton singleton = Singleton.getInstance();
3. 싱글톤 패턴의 장단점
3.1. 장점
- 메모리 효율성: 인스턴스가 하나만 생성되기 때문에 메모리를 효율적으로 사용할 수 있습니다.
- 공유 자원 관리: 자원이나 설정, 데이터베이스 연결 등 공유가 필요한 자원을 효율적으로 관리할 수 있습니다.
- 인스턴스 제어: 클래스 인스턴스 생성을 제어할 수 있으며, 초기화 과정을 관리할 수 있습니다.
- 정적 데이터 관리: 싱글턴 패턴을 사용해서 전역적인 데이터를 저장, 처리 및 관리할 수 있습니다. 이를 통해 전체 애플리케이션에서 일관된 정보를 유지할 수 있습니다.
3.2. 단점
- 전역 상태 유발: 전역적으로 사용 가능한 인스턴스가 상태 변화를 쉽게 유발할 수 있습니다.
- 테스트 어려움: 상태 변화로 인해 테스트하기 어렵고, 단위 테스트 시 서로 영향을 줄 수 있습니다.
- 객체 지향 원칙 위반: 전역 상태를 이용해 결합도를 높이므로 객체 지향 원칙을 위반할 수 있습니다.
- 멀티스레딩 이슈: 동시성 문제로 인해 여러 스레드에서 동시에 싱글턴 객체를 공유할 때 문제가 발생할 수 있습니다.
4. 싱글톤 패턴의 사용 예시
싱글톤 패턴은 다음과 같은 경우에 사용됩니다.
- 데이터베이스 연결
- 네트워크 연결
- 파일 핸들러 로깅
- 캐싱
- 스프링 프레임워크
2023.07.12 - [JAVA] - 디자인패턴 - 팩토리(Factory) 패턴
2023.07.12 - [JAVA] - 디자인패턴 - 팩토리(Factory) 패턴
2023.07.12 - [JAVA] - 디자인패턴 - 어댑터(Adapter) 패턴
2023.07.12 - [JAVA] - Java 디자인패턴 - 옵저버(Observer) 패턴
'JAVA' 카테고리의 다른 글
JAVA 디자인패턴 - 어댑터(Adapter) 패턴 (0) | 2023.07.12 |
---|---|
JAVA 디자인패턴 - 팩토리(Factory) 패턴 (0) | 2023.07.12 |
자바 레코드(JAVA RECORD) 개념, 특징, 사용법, 장점, 단점, 활용 사례 (0) | 2023.07.11 |
JAVA8 | 인터페이스 디폴트 메서드, Optional 클래스 (0) | 2023.06.16 |
JAVA8 | 스트림 API (0) | 2023.06.16 |
댓글