본문 바로가기
GoF의 디자인 패턴

프로토타입(Prototype) 패턴

by 아토로 2022. 1. 10.

기존 인스턴스를 복제하여 새로운 인스턴스를 만드는 방법

 

복제 기능을 갖추고 있는 기존 인스턴스를 프로토타입으로 사용해 새 인스턴스를 만들 수 있다.

구현 방법

장점과 단점

장점

  • 복잡한 객체를 만드는 과정을 숨길 수 있다.
  • 기존 객체를 복제하는 과정이 새 인스턴스를 만드는 것보다 비용(시간 또는 메모리)적인 면에서 효율적일 수도 있다.
  • 추상적인 타입을 리턴할 수 있다.

단점

  • 복제한 객체를 만드는 과정 자체가 복잡할 수 있다. (특히, 순환 참조가 있는 경우)

실무 적용 사례

  • 자바 Object 클래스의 clone 메소드와 Cloneable 인터페이스
  • 얕은 복사(shallow copy)와 깊은 복사(deep copy)
  • Collections 을 사용할 때 대부분 인터페이스 타입으로 인스턴스를 사용하기 때문에 clone() 메서드를 사용할 수 없다. 따라서 구현체의 생성자에 파라미터로 넣는 방식을 주로 사용한다 (new ArrayList<>(list))
  • ModelMapper

예제 코드

https://github.com/jsyang-dev/study-designpattern/tree/master/src/main/java/me/study/designpattern/prototype

'GoF의 디자인 패턴' 카테고리의 다른 글

템플릿 메소드(Template method) 패턴  (0) 2022.01.19
어댑터(Adapter) 패턴  (0) 2022.01.13
빌더(Builder) 패턴  (0) 2022.01.08
추상 팩토리 패턴  (0) 2022.01.06
팩토리 메소드(Factory method) 패턴  (0) 2022.01.04

댓글