The Bridge Pattern

Use the Bridge pattern to separate abstraction subclasses and implementation subclasses into separate hierarchies connected at their roots by a bridge (peer):

Note that the Bridge pattern is often combined with the Adapter pattern to connect existing implementations with the root of the implementation hierarchy.