💡 프로토타입 패턴
🍖 정의
- 프로토타입 : 복제를 지원하는 객체
- 실제로 복제되는 객체들에 복제 프로세스를 위임하는 패턴
- 객체의 복제본을 생성하려면 객체의 클래스를 알아야 하므로, 해당 클래스에 의존하게 되는 문제 해결
- 복제를 지원하는 모든 객체에 대한 공통 인터페이스를 선언
-> 코드를 객체의 클래스에 결합하지 않고도 해당 객체를 복제 가능
🍴 clone 메서드
- 일반적으로 인터페이스에는 단일 clone 메서드만 포함
- 현재 클래스의 객체를 만든 후 이전 객체의 모든 필드 값을 새 객체로 전달
- 대부분의 프로그래밍 언어는 객체들이 같은 클래스에 속한 다른 객체의 비공개 필드에 접근할 수 있도록 하기 때문에 비공개 필드 복사도 가능
🍗 적용
- 복사해야 하는 객체들의 구상 클래스들에 코드가 의존하면 안 될 때 사용
- 프로토타입 패턴은 클라이언트 코드에 복제를 지원하는 모든 객체와 작업할 수 있도록 일반 인터페이스를 제공
-> 클라이언트 코드가 복제하는 객체들의 구상 클래스에서 클라이언트 코드를 독립시킴
- 객체를 초기화하는 방식만 다른 자식 클래스들의 수를 줄이고 싶을 때 사용
- 일부 설정과 일치하는 자식 클래스를 인스턴스화하는 대신 적절한 프로토타입을 찾아 복제
🍽 사용 이유
- 비슷한 오브젝트를 지속적으로 생성해야 할 때 유용
- 새 오브젝트를 계속 new로 생성하는 것은 부담스러운 일
- 기존 오브젝트의 복사본을 만들어서 데이터를 수정하는 방식으로 생성
- 동적 클래스 확장
- 세부 클래스를 미리 명세하지 않고, 런타임 때 원형을 복제하여 복사본을 수정함으로써 동적으로 오브젝트 생성
🥩 Unity와 프로토타입 패턴
- 유니티의 프리팹은 프로토타입 패턴을 따르고 있다.
- 원형인 프리팹을 복제하여 오브젝트로 만들기 때문
출처 - 프로토타입 패턴
출처 - 유니티 프로그래밍 패턴 (4) Prototype
출처 - 원형 패턴(Prototype Pattern)
끗!