The prototype pattern defines a copy() or clone() method on all classes that follow the prototype pattern. Instead of creating new instances of those objects with the constructor, new instances are obtained by calling the copy() method. The cloned object will be an exact copy of the original object.
Often, the prototype pattern will be implemented with a shared registry in the form of a factory method that would return the original source object to be cloned. In Swift, this pattern is usually implemented with the help of the NSCopying protocol.