Benefits:
• It preserves encapsulation boundaries.
• It simplifies the originator.
Applicable Scenarios:
• A snapshot containing enough information regarding the state of an object can be saved so that it can be restored to the complete state using the snapshot information later.
• Using a direct interface to obtain the state would impose implementation details that would break the rules of encapsulation for the object.