This gives user the freedom to add or remove observers at any time. One liability of the Observer pattern is unexpected updates. A series of updates to observers may be caused by a seemly innocuous operation on the subject. A sample code and several known uses are presented. They encapsulate knowledge about which concrete classes the system uses and hide how instances of these classes are created and put together.
Prototype belongs to the creational patterns.
It is used to specify the kinds of objects to create using a prototypical instance and create new objects by copying this prototype. New objects may be specified by varying values. New objects may be specified by varying structure. An application may be configured with classes dynamically. One liability of the Prototype is the difficulty to implement the clone operation for each subclass of Prototype.