추상 팩터리 클래스는 종종 팩터리 메서드 집합을 기반으로 하지만 프로토타입을 사용하여 이러한 클래스에서 메서드를 구성할 수도 있습니다. 프로토타입 패턴은 소프트웨어 개발에서 창작물적인 디자인 패턴입니다. 만들 개체 유형이 새 개체를 생성하기 위해 복제된 프로토타입 인스턴스에 의해 결정될 때 사용됩니다. 이 패턴은 프로토타입 또는 추상 팩토리가 적절한 경우가 있습니다. 추상 팩토리는 제품 개체(GoF, p126)를 복제하고 반환할 프로토타입 집합을 저장할 수 있습니다. 추상 공장, 빌더 및 프로토타입은 구현에서 싱글톤을 사용할 수 있습니다. (GoF, p81, 134). 추상 팩터리 클래스는 팩터리 메서드(상속을 통한 생성)로 구현되는 경우가 많지만 프로토타입(위임을 통한 생성)을 사용하여 구현할 수 있습니다. (GoF, p95) (검색 알고리즘은 최적화되지 않습니다.

패턴 구현을 설명하는 기본 알고리즘입니다.) 정말 감사합니다, 당신의 디자인 패턴 튜토리얼은 나에게 디자인 패터를 이해하는 데 많은 도움이. 복제 메서드는 여전히 새 개체를 사용 하 여 개체를 수정 합니다. 디자인 패턴 요구 사항을 충족하지 않습니다. 안녕하세요, Clonable (I)을 정상적으로 구현 하 여 개체를 복제 하는 것 의 차이점을 얻지 못했습니다., 그리고 프로토 타입 패턴을 사용 하 여.무엇 일반 복제 프로세스에 비해 프로토 타입 디자인 패턴의 장점…. 이 패턴은 프로토타입을 사용하여 개체의 종류를 만듭니다. 즉, 프로토타입 오브젝트의 오브젝트를 만드는 동안 클래스는 실제로 복제본을 만들고 프로토타입으로 반환합니다. 당신은 여기에서 볼 수 있습니다, 우리는 필요한 경우 프로토 타입을 복제하기 위해 MemberwiseClone 방법을 사용했다. 프로토타입을 사용하면 클라이언트에서 새 인스턴스를 만드는 복잡성을 숨길 수 있습니다. 개념은 비용이 많이 드는 작업을 포함할 수 있는 새 인스턴스를 처음부터 만드는 대신 기존 개체를 복사하는 것입니다. 기존 개체는 프로토타입 역할을 하며 개체의 상태를 포함합니다. 새로 복사된 객체는 필요한 경우에만 동일한 속성을 변경할 수 있습니다.

이 방법을 사용하면 특히 개체 만들기가 많은 경우 비용이 많이 드는 리소스와 시간을 절약할 수 있습니다. 패턴은 Java의 복제 가능한 인터페이스에서 사용됩니다. Cloneable은 개체가 이미 보호된 복제() 메서드를 정의했기 때문에 복제할 수 있는 개체를 표시하는 마커 인터페이스로 구현됩니다. 클라이언트는 이 복제 방법의 수퍼클래스 구현을 재정의하거나 호출하여 복사본을 수행할 수 있습니다. 개체에 빌드인 clone() 메서드를 사용하도록 설정하는 PrototypeCapable 인터페이스를 도입하는 데 많은 가치를 두지 못했습니다. 자바에서 복제할 수 있는 계약 의무가 아니라 복제 메커니즘이 상속 계층 구조 간에도 작동하는지 확인하기 위한 목적으로 구현이 빌드된 것이고, 그렇지 않으면 형식 상속이 일치하지 않습니다. 즉, Object.clone 빌드 인 메커니즘에 바인딩하는 „super.clone()“을 호출하는 것 이외에는 PrototypeCapable 인터페이스에 정의된 „복제“ 동작을 올바르게 구현할 수 있는 방법이 없습니다. 요점은 무엇입니까? 프로토타입 패턴에는 추상 팩터리 패턴이 있는 많은 공통 장소가 있습니다. 클라이언트에서 구체적인 제품 클래스를 숨기므로 클라이언트는 제품 이름을 더 적게 알아야 합니다. 안녕하세요 Thejus, 예를 들어 우리는 데이터베이스에서 데이터를 로드 하는 개체를 가정 하기 때문에.

프로토타입 패턴 예제