티스토리 뷰
![]() |
|
싱글턴은 객체를 하나만 만들 수 있는 클래스다.
싱글턴 패턴 구현 1
//생성자를 private 으로 선언하고 public static 필드로 인스턴스를 저장.
public class Elvis {
public static final Elvis INSTANCE = new Elvis();
private Elvis() {...}
public void leaveTheBuilding() {...}
}
싱글턴 패턴 구현 2
//정적 팩터리를 이용한 싱글턴 패턴
public class Elvis {
private static final Elvis INSTANCE = new Elvis();
private Elvis() {...}
public static Elvis getInstance() {
return INSTANCE;
}
public void leaveTheBuilding() {...}
}
위에서 생성한 싱글턴 패턴의 클래스를 직렬화 하기 위해서는 각 필드마다 transient로 선언하고
readResolve() 메서드를 추가해 줘야 역직렬화 될 때마다 새로운 객체가 생기지 않는다.
private Object readResolve() {
//동일한 Elvis 객체가 반환되도록 하는 동시에, 가짜 Elvis 객체는 garbage collector 가 처리하도록 만든다.
return INSTANCE;
}
원소가 하나 뿐인 Enum 자료형으로 정의하면 싱글턴 패턴을 따른다.
public enum Elvis {
INSTANCE;
public void leaveTheBuilding() {...}
}
'JAVA > Effective Java' 카테고리의 다른 글
규칙5 불필요한 객체는 만들지 말라 (0) | 2018.12.19 |
---|---|
규칙6 유효기간이 지난 객체 참조는 폐기하라 (0) | 2018.12.19 |
규칙4 객체 생성을 막을 때는 private 생성자를 사용하라 (0) | 2018.12.19 |
규칙2 생성자 인자가 많을 때는 Builder 패턴 적용을 고려하라 (0) | 2018.12.19 |
규칙1 생성자 대신 정적 팩터리 메서드를 사용할 수 없는지 생각해 보라 (0) | 2018.12.19 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- HashMap
- ConcurrentHashMap
- DyanomoDB
- mariadb-connector-j
- spring cloud gateway
- msyql-connector-java
- notify()
- dynamodb
- getBoolean
- reactor
- GlobalFilter
- N+1
- aurora
- Lazy
- referencedColumnName
- MariaDB
- custom config data convertion
- AbstractMethodError
- reative
- rate limit
- mariada-connector
- RouteDefinition
- router
- circurit breaker
- Seperate Chaining
- notifyAll()
- RoutePredication
- wait()
- Flux
- ResultSet
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함