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):