[ 디자인 패턴: 생성 ] (5) 프로토타입 (Prototype)

2025. 4. 2. 12:31·개발
반응형


 

프로토타입 : 기존 객체를 복사하여 새로운 객체를 생성하는 디자인 패턴

 

객체 생성을 위한 복잡한 과정을 간소화하고, 기존 객체와 유사한 객체를 생성하는 시간과 비용을 줄일 수 있다.

 


예제

 

public class Employee implements Cloneable
{
    private Long id;
    private String name;

    public Employees(Long id, String name)
    {
        this.id = id;
        this.name = name;
    }

    @Override
    public Object clone() throws CloneNotSupportedException {
        return new Employee(this.id, thid.name);
    }
}

 

자바는 clone 메서드 구현을 강제하는 Cloneable 인터페이스를 지원한다.

클래스가 해당 인터페이스를 구현하도록 해서 클라이언트가 쉽게 객체를 복사할 수 있도록 한다.

 

public static void main(String[] args) throws CloneNotSupportedException
{
    Employee emp = new Employee(1, "윤재훈");

    Employee emp1 = (Employee) emps.clone();
    Employee emp2 = (Employee) emps.clone();
}

 

클라이언트는 위와 같이 쉽게 기존 객체를 복사할 수 있다.

clone 메서드를 제공하지 않았다면, 객체를 일일히 생성해야 해서 더 많은 시간과 비용을 들었을 것이다.

 

또한, 기존 객체가 데이터베이스에 접근해야만 얻을 수 있는 큰 데이터를 가지고 있다고 가정해보자.

clone 메서드가 없었다면, 새로운 객체를 생성할 때마다 데이터베이스에서 해당 데이터를 가져와야 했을 것이다.

그러나, 프로토타입 패턴 덕분에 데이터베이스에 한 번만 접근해도 여러 객체를 생성할 수 있다.

 


장점

 

  • 객체를 독립적으로 복제할 수 있다.
  • 반복되는 초기화 코드 대신, 프로토타입들을 복제하는 방법을 사용할 수 있다.
  • 복잡한 객체를 더 쉽게 생성할 수 있다.
  • 객체를 만드는 과정을 숨길 수 있다.

 


단점

 

  • 순환참조 등의 복잡한 구조를 띠는 객체를 복제하는 clone 메서드 구현이 어려울 수 있다.

 

 


 

 

(참고)

https://refactoring.guru/ko/design-patterns/prototype

 

 

반응형
저작자표시 비영리 변경금지 (새창열림)

'개발' 카테고리의 다른 글

[ 디자인 패턴: 구조 ] (2) 복합체/합성 (Composite)  (0) 2025.04.04
[ 디자인 패턴: 구조 ] (1) 어댑터 (Adapter, Wrapper)  (0) 2025.04.03
[ 디자인 패턴: 생성 ] (4) 빌더 (Builder)  (0) 2025.04.01
[ 디자인 패턴: 생성 ] (3) 싱글톤 (Singleton)  (0) 2025.03.31
[ 디자인 패턴: 생성 ] (2) 추상 팩토리 (Abstract Factory)  (0) 2025.03.30
'개발' 카테고리의 다른 글
  • [ 디자인 패턴: 구조 ] (2) 복합체/합성 (Composite)
  • [ 디자인 패턴: 구조 ] (1) 어댑터 (Adapter, Wrapper)
  • [ 디자인 패턴: 생성 ] (4) 빌더 (Builder)
  • [ 디자인 패턴: 생성 ] (3) 싱글톤 (Singleton)
sleepzzz214
sleepzzz214
아! 응애에요~!
  • sleepzzz214
    응애 개발자의 일지
    sleepzzz214
  • 전체
    오늘
    어제
    • ⭐ (55)
      • 개발 (55)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    스프링
    DB
    구조 패턴
    스프링 핵심 원리 - 기본편
    @Autowired
    디자인 패턴
    java
    프로토타입
    김영한 스프링 강의
    객체 지향 프로그래밍
    스프링부트
    데이터베이스
    DI
    객체 지향 설계
    의존성 주입
    제어의 역전
    싱글톤
    상태 패턴
    자바
    대규모 트래픽
    행동 패턴
    싱글톤 패턴
    스프링 빈
    모니터링
    Spring
    Solid
    상태
    state
    생성 패턴
    의존 관계 주입
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
sleepzzz214
[ 디자인 패턴: 생성 ] (5) 프로토타입 (Prototype)
상단으로

티스토리툴바