프로토타입 패턴은 프로토타입(원형)을 만들어 놓고 그것을 clone 하여 사용 하는 방법이다.
new 를 사용하여 객체를 생성 하는것이 비용이 크거나 , 기존의 객체와 비슷하지만 일부만 변경된 객체를 사용하는 경우 사용할 수 있다.
가령, 그랜져와 K7 라는 객체가 필요한데 사실 둘은 공통의 플랫폼을 사용하기 때문에 car라는 프로토타입(원형)을 만들어 놓고 그랜져와 k7이라는 객체가 필요할 때마다 프로토타입을 clone 하여 사용하면 car라는 객체를 초기화 할때 필요한 비용(필드 값을 설정하는등)을 줄 일 수 있다.
이때 원형을 구현하고 복제된 객체를 던져주는 부분은 팩토리 패턴과 함께 사용 될 수 있으며, 구현에 있어 싱글톤 패턴을 사용 할 수 있다.
프로토타입 패턴을 활용한 프로그래밍을 프로토타입 프로그래밍이라고 부를 수 있는데, 이는 클래스 기반 프로그래밍에서 상속을 이용해 객체간의 관계를 설정하는 것과 다르게 프로토타입(원형)을 기반으로 객체를 사용 하는 프로그래밍 기법이다.
Java에서는 Cloneable 인터페이스를 구현하여 프로토타입 패턴을 구현할 수 있다.
참고 : https://ko.wikipedia.org/wiki/%ED%94%84%EB%A1%9C%ED%86%A0%ED%83%80%EC%9E%85_%ED%8C%A8%ED%84%B4