Definition, synonyms and related words
A structural design pattern that decouples an abstraction from its implementation so that the two can vary independently.