The Bridge Pattern:Decouple an abstraction from its implementation so that the two can vary independently.