Java/디자인 패턴

생성 패턴 _ 프로토타입 패턴

minquu 2025. 7. 21. 14:08
반응형

🧬 프로토타입 패턴 (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