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 |
Tags
- TypeScript
- 생산자 소비자 패턴
- saga pattern
- MSA
- Resilinece4j
- zipkin
- Serial GC
- 스레드
- 멀티스레드
- 스프링 배치
- thread
- 키클락
- spring batch
- java 정렬
- 사가 패턴
- 배치
- 알고리즘
- 디자인패턴
- JPA
- 디자인 패턴
- 타입스크립트
- 체인 패턴
- spring cloud
- Spring Cloud Netfilx Eureka
- The law of Demeter
- Transaction Pattern
- Action Pattern
- Spring Boot Actuator
- Parallel Old GC
- Java
Archives
- Today
- Total
PSD( Private-Self-Development )
프로토타입 패턴 본문
프로토타입 패턴?
보통은 객체 생성 시 new 키워드를 통해 자원을 새로 할당하여 생성하게 된다.
이때, 복합 객체 거나 생성 로직이 복잡한 경우, 생성할 때마다 이러한 리소스가 들어가 자원 낭비가 된다.
이러한 상황에서, 그때그때 새로 생성하는 것이 아닌 기존 데이터를 복사하여 사용하여
리소스 낭비를 줄이는 것이 프로토타입 패턴이다.
프로토타입 패턴의 장점
- 구현 클래스에 종속되지 않고 객체를 생성(복제)할 수 있다.
- 반복되는 초기화 코드를 적용하지 않는다.
- 복합 객체를 쉽게 생성할 수 있다.
프로토타입 패턴의 단점
- 순환 참조가 있는 복합 객체는 복제가 까다로울 수 있다.
프로토타입 패턴 구현
@Getter
public class Computer implements Cloneable{
private String cpu;
private String ram;
private String storage;
@Override
public Computer clone() {
try {
return (Computer) super.clone();
} catch (CloneNotSupportedException e) {
throw new AssertionError();
}
}
}
// 사용 예시
public static void main(String[] args) {
Computer computer = new Computer( "cpu", "ram", "storage" );
Computer cloneComputer = computer.clone();
}
언제 사용해야 할까?
- 비슷한 객체를 자주 생성해야 할 때
- 복합 객체를 생성하기 위한 생성 로직이 복잡하고 리소스가 많이 들어갈 때
참조 :