[Swift 디자인 패턴] Prototype Pattern (프로토타입) - 디자인 패턴 공부 5
**Prototype
**은 기존 객체의 클래스에 종속되지 않고 기존 객체를 복사할 수 있는 창의적인 디자인 패턴입니다.
객체가 있는데 그 객체의 정확한 복사본을 만들고 싶다고 가정해 보십시오.
그걸 어떻게 하시겠어요?
→ 먼저 **동일한 클래스의 새 개체
**를 만들어야 합니다.
→ 그런 다음 원래 개체의 모든 필드를 살펴보고 해당 값을 새 개체에 복사해야 합니다.
단점
private
일 수 있고 객체 자체를 외부에서 볼 수 없기 때문에 모든 객체를 이런 방식으로 복사할 수 없다.개체를 "외부에서" 복사하는 것이 항상 가능한 것은 아닙니다.
Direct approach에는 한가지 문제가 더 있다. copy를 하려면 객체의 클래스를 알아야 하므로 코드는 해당 클래스에 종속된다.
만약 추가적인 의존이 문제가 없다면, 다른 함정일 수 있다.
ex) 메서드의 매개 변수가 특정 인터페이스를 따르는 객체를 허용할 때 객체가 따르는 인터페이스만 알고 **concrete class
**는 모르는 경우가 있다.
Prototype
패턴은 clone
프로세스를 clone
중인 실제 객체로 위임한다.
clone
를 지원하는 모든 객체에 대해 공통 인터페이스를 선언한다.