반응형
🧬 프로토타입 패턴 (Prototype Pattern)
1. 패턴 개요
프로토타입 패턴은 객체를 new 키워드로 새로 생성하지 않고, 기존 객체를 복제(clone)하여 새 객체를 생성하는 생성 패턴입니다.
📌 목적: 객체 생성 비용을 줄이고, 런타임 중에 유연하게 객체를 복사해서 사용하기 위함
2. 언제 사용하나요?
new를 통한 객체 생성 비용이 큰 경우- 비슷한 객체를 여러 개 생성해야 할 때
- 런타임 동적 구성 기반 객체 생성을 원할 때
- 생성자 대신 유연한 복제 로직이 필요할 때
3. 장단점 비교
| 장점 👍 | 단점 👎 |
|---|---|
| 객체 생성 비용 절감 | 깊은 복사 vs 얕은 복사 문제 발생 |
new 없이 동적으로 객체 생성 |
clone 메서드 구현 필요 |
| 기존 객체 상태 유지 가능 | 객체 구성 따라 복잡도 증가 |
| 복잡한 생성자 제거 가능 | 모든 클래스가 Cloneable을 구현해야 함 |
4. 예제 코드 (Java)
🧪 Monster 클래스
public class Monster implements Cloneable {
private String type;
private int hp;
public Monster(String type, int hp) {
this.type = type;
this.hp = hp;
}
public void attack() {
System.out.println(type + "이(가) 공격합니다! HP: " + hp);
}
@Override
public Monster clone() {
try {
return (Monster) super.clone(); // 얕은 복사
//깊은 복사 시 -> new 해주면 됌
} catch (CloneNotSupportedException e) {
throw new AssertionError();
}
}
}
public class Main {
public static void main(String[] args) {
Monster slime = new Monster("슬라임", 100);
Monster slimeClone = slime.clone();
slime.attack(); // 슬라임이 공격합니다! HP: 100
slimeClone.attack(); // 슬라임이 공격합니다! HP: 100
}
}
✅ 핵심 키워드 요약
• 객체 복제(복사)
• clone() 메서드
• 생성 비용 절감
• 런타임 객체 생성
• 얕은 복사 / 깊은 복사 주의반응형
'Java > 디자인 패턴' 카테고리의 다른 글
| 생성 패턴 _ 빌더 패턴 (0) | 2025.07.21 |
|---|---|
| 생성 패턴 _ 추상 팩토리 패턴 (0) | 2025.07.21 |
| 생성 패턴_팩토리 메서드 패턴 (0) | 2025.07.18 |
| 생성 패턴 _ 싱글턴 패턴 (0) | 2025.04.23 |