diff --git a/README.md b/README.md index 8370a918e..f6f731f46 100644 --- a/README.md +++ b/README.md @@ -35,6 +35,13 @@ ##Prototype **Intent:** Specify the kinds of objects to create using a prototypical instance, and create new objects by copying this prototype. +![alt text](https://github.com/iluwatar/java-design-patterns/blob/master/prototype/etc/prototype.jpg "Prototype") + +**Applicability:** Use the Prototype pattern when a system should be independent of how its products are created, composed and represented; and +* when the classes to instantiate are specified at run-time, for example, by dynamic loading; or +* to avoid building a class hierarchy of factories that parallels the class hierarchy of products; or +* when instances of a class can have one of only a few different combinations of state. It may be more convenient to install a corresponding number of prototypes and clone them rather than instantiating the class manually, each time with the appropriate state + ##Singleton **Intent:** Ensure a class only has one instance, and provide a global point of access to it.