BENEFITS: IT Enables The Sec4 of Implement from the interface.it Improves Extensibility.it Allows The Hiding of Implementation Details from the client.
Applicable Scenarios: You want to avoid a permanent binding between the functional abstraction and its implementation.Both the functional abstraction and its implementation need to be extended using subclasses.Changes to the implementation should not impact the client (not even a recompile).