- Decouple an abstraction or interface from its implementation so that the two can vary independently
- To separate abstraction and implementation permanently
- Share an implementation among multiple objects
- To improve extensibility
- To hide implementation details from clients
No comments:
Post a Comment
Note: only a member of this blog may post a comment.