views:

483

answers:

3

What implementations of the Prototype Pattern exist on the Java platform?

A prototype pattern is a creational design pattern used in software development when the type of objects to create is determined by a prototypical instance, which is cloned to produce new objects.

Prototype based programming:

Prototype-based programming is a style of object-oriented programming in which classes are not present, and behavior reuse (known as inheritance in class-based languages) is performed via a process of cloning existing objects that serve as prototypes.

The implementation should be aware that some Java objects are mutable, and some are immutable (see Mutable vs Immutable objects).

A: 

Java defines the Cloneable interface, described here at JGuru

Java provides a simple interface named Cloneable that provides an implementation of the Prototype pattern. If you have an object that is Cloneable, you can call its clone() method to create a new instance of the object with the same values.

Warning: see Cloneable is broken

devstopfix
A: 

Steve Yegge describes the Eclipse implementation of the ASTNode

devstopfix
+1  A: 

According to Josh Bloch and Doug Lea, Cloneable is broken. In that case, you can use a copy constructor.

jamesh
Thanks for this link - I've also added a reference to mutable/immutable objects in the question.
devstopfix
`Object.clone` is broken. But cloning manually is still fine.
Tom Hawtin - tackline
This distinction really is what I wanted to suggest. ie Cloneable as a marker interface, and void clone throws CloneNotSupportedException
jamesh