BENEFITS: IT ISOLATES Client from Concrete (Implementation) Classes. It eases The Exchanging of Object Families. It Promotes Consistency Among Objects.
Applicable Scenarios: The system needs to be independent of how its objects are created, composed, and represented The system needs to be configured with one of a multiple family of objects The family of related objects is intended to be used together and this constraint.. .