Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Android
- QueryDSL
- 자바
- jpa
- 백준
- transaction
- springdatajpa
- 스프링 핵심 기능
- 스프링 핵심 원리
- JPQL
- 김영한
- Thymeleaf
- 인프런
- SpringBoot
- Servlet
- pointcut
- 스프링
- java
- Greedy
- JDBC
- 알고리즘
- AOP
- Proxy
- db
- kotlin
- http
- Exception
- spring
- Spring Boot
- 그리디
Archives
- Today
- Total
개발자되기 프로젝트
인스턴스 생성 패턴 - Singleton Pattern 본문
1. Singletone Pattern이란?
- 자바에서 객체를 사용하기 위해서는 생성해야 함.
- 매번 new를 하면 새로운 객체가 생성됨..
- 클래스의 인스턴스는 오직 하나임을 보장하여 이 인스턴스에 접근할 수 있는 방법을 제공하는 패턴
2. 의도(intent)와 동기(Motivation)
- 클래스에서 만들 수 있는 인스턴스가 오직 하나이고, 이에 대한 접근을 어디에서든지 하나로만 통일하여 제공.
- 어떤 클래스의 경우에는 정확히 하나의 인스턴스만을 갖도록 하는 것이 중요하다.
- 한 회사에서는 하나의 회계 시스템을 운영
- Database와 연결하는 connection은 여러개 일 수 있지만 connection pool은 한 개
- 자바에서는 전역 변수가 존재하지 않으므로 인스턴스가 하나만 존재하도록 설계해야 하고
이에 접근 하는 방법을 제공.
3. Class Diagram
4. 객체 협력 (collaborations)
- 클라이언트는 Singleton 클래스에 정의된 public 오퍼레이션을 통해서
- 유일하게 생성되는 Singleton 인스턴스에 접근할 수 있다.
5. 중요한 결론 (consequence)
- 유일하게 존재하는 인스턴스로의 접근을 통제할 수 있다.
- 전역 변수를 사용함으로써 발생할 수 있는 오류를 (C++ 의 경우) 줄 일수 있다.
6. 예제
- 유일한 인스턴스 선언
- 생성자 못쓰게 막기
- 이처럼 인스턴스가 딱 하나만 존재하게 만들 수 도 있고 딱 몇개만 존재하도록 만들 수 도 있다.
public class ConnectionPool {
//유일한 인스턴스 선언
private static ConnectionPool instance = new ConnectionPool();
//생성자 못쓰게 막기
private ConnectionPool() {
}
public static ConnectionPool getInstance() {
if (instance == null){
instance = new ConnectionPool();
}
return instance;
}
}
7. GitHub : 211104 Singleton Pattern
'Java > 디자인 패턴' 카테고리의 다른 글
인스턴스 생성 패턴 - Abstract Factory Pattern (0) | 2021.11.04 |
---|---|
인스턴스 생성 패턴 - Prototype Pattern (0) | 2021.11.04 |
클래스 다이어그램 (0) | 2021.11.04 |
SOLID 원칙 (0) | 2021.11.04 |
디자인 패턴 (0) | 2021.11.03 |
Comments