Name: Prototype Intent: As the Abstract Factory (even with variation of Factory Method) Create families of related products without concern of their concrete types. Structure: for each product: - there is an abstract class - for each family: -there is a concrete class there is a single factory class, the prototype - class holds each product of a family - class has device to change families of products - class has method to clone and returns held products Notes: - about cloning - products implement Cloneable - products must override method clone to make it accessible - products clone by calling clone in the superclass - products either handle or propagate the exception - optional covariance