Solution — Separate Abstraction and Implementation Hierarchies - Bridge Pattern | OneNoughtOne