Das Muster “Prototyp” stellt dem Clientcode eine allgemeine Schnittstelle für die Arbeit mit allen Objekten zur Verfügung, die das Klonen unterstützen. Diese Schnittstelle macht den Clientcode unabhängig von den konkreten Klassen von Objekten, die er klont. Das Neue tut auch eine andere Sache für Sie. Wenn dieses leere Objekt erstellt wird, wird es an ein Prototypobjekt delegiert. Sie können dieses Objekt direkt mit Weapon.prototype erreichen. Dies ist ein so schönes, cleveres, minimales System, dass ich, sobald ich davon erfuhr, begann, eine Prototyp-basierte Sprache zu erstellen, um mehr Erfahrung damit zu bekommen. Auch wenn wir für jedes Monster unterschiedliche Klassen haben, gibt es andere Möglichkeiten, diesen Felis catus zu dekorieren. Anstatt für jedes Monster separate Laicherklassen zu erstellen, können wir Spawn-Funktionen wie folgt erstellen: Um die Anforderungen des Beispiels für die Vereinbarungserstellung zu implementieren, können Sie eine abstrakte Klasse mit dem Namen PrototypeCapableDocument erstellen, die Cloneable implementiert. Diese Klasse fungiert als Basisklasse für alle Klassen, die Vereinbarungen darstellen und das Klonen ihrer Objekte ermöglichen. Als Nächstes können Sie die Geschäftsbedingungen und Geheimhaltungsvereinbarungen mit den Klassen TAndC und NDAgreement modellieren. Da eine Geheimhaltungsvereinbarung von beiden Parteien unterzeichnet wird, können Sie eine AuthorizedSignatory-Klasse erstellen, um die Signaturautorität des Inhaltsproduktionshauses zu repräsentieren und es zu einem Mitglied der NDAgreement-Klasse zu machen.

Schließlich können Sie eine DocumentPrototypeManager-Klasse erstellen, die die Prototypobjekte erstellt und speichert und eine Kopie zurückgibt, wenn ein Client eine Vereinbarung anfordert. Der Client erhält eine Kopie des Prototypobjekts, und der Personalleiter kann die Kopie mit dem Herstellernamen aktualisieren, um eine Vereinbarung zu erstellen. Angenommen, wir haben zwei verschiedene Implementierungen von Tree namens PlasticTree und PineTree: Eine kleine Diskussion erscheint, wenn darüber gesprochen wird, wie tief oder flach ein Klon sein sollte: Ein tiefer Klon klont die Instanzvariablen im Klonobjekt, während ein flacher Klon die Instanzvariablen zwischen dem Klon und dem Original teilt. Normalerweise ist ein flacher Klon genug und sehr einfach, aber das Klonen komplexer Prototypen sollte tiefe Klone verwenden, damit der Klon und das Original unabhängig sind, ein tiefer Klon, der seine Komponenten benötigt, um die Klone der Komponenten des komplexen Objekts zu sein.