싱글톤 패턴
- 하나의 클래스에 오직 하나의 인스턴스만 가지는 패턴
- 하나의 클래스를 기반으로 여러 개의 개별적인 인스턴스를 만들 수 있지만 그렇게 하지 않고 하나의 클래스를 기반으로 단 하나의 인스터를 만들어 이를 기반으로 로직 만드는데 쓰이며 보통 데이터베이스 연결모듈에 많이 사용
싱글톤 패턴 장점
- 하나의 인스턴스를 기반으로 해당 인스턴스를 다른 모듈들이 공유하여 사용하기 때문에 인스턴스를 생성할 때 드는 비용이 줄어듬 그렇기 때문에 인스턴스 생성에 많은 비용이 드는 i/o 바운드 작업에 많이 사용
* i/o 바운드 : 디스크 연결, 네트워크 통신, 데이터 베이스 연결
싱글톤 패턴 단점
- 의존성이 높아지며 TDD(Test Driven Development)를 할 때 걸림돌
- TDD를 할 때 단위 테스트를 주로 하는데, 단위 테스트는 테스트가 서로 독립적이어야 하며 테스트를 어떤 순서로든 실행 할 수 있어야 함 하지만 싱글톤 패턴은 미리 생성된 하나의 인스턴스 기반으로 구현하는 패턴이므로 각 테스트 마다 독립적인 인스턴스를 만들기 어려움
싱글톤 패턴으로 회사 객체 구현하기
- 생성자는 private으로 선언
// 외부에서 막 생성 할 수 없음
private Company() {}
- 클래스 내부에 유일한 private 인스턴스 생성
// 유일한 객체 생성
private static Company instance = new Company();
- 외부에서 유일한 인스턴스를 참조할 수 있는 public 메서드 제공
public static Company getCompany() {
if(instance == null) {
instance = new Company();
}
return instance;
}
- 테스트 코드
public class CompanyTest {
public static void main(String[] args) {
Company company1 = Company.getCompany();
Company company2 = Company.getCompany();
System.out.println(company1);
System.out.println(company2);
}
}

같은 주소 값을 바라본다.
참조 :
- https://www.youtube.com/watch?v=DHo8qRCtmGU
- 패스트캠퍼스
'JAVA' 카테고리의 다른 글
| [JAVA] 2차원 배열 (1) | 2023.07.10 |
|---|---|
| [JAVA] 배열 (2) | 2023.07.09 |
| [JAVA] static 메서드 (0) | 2023.07.04 |
| [JAVA] static 변수 (3) | 2023.07.04 |
| [JAVA] 객체 간의 협력 (1) | 2023.06.28 |