MediumPro challengePythonJavaScriptTypeScript
Bridge
TypeScriptDesign PatternsStructuralBridge
Decouple an abstraction (Circle) from its implementation (how it's rendered) so the two can vary independently — a Circle doesn't need a VectorCircle/RasterCircle subclass for every renderer.
Implement `VectorRenderer`/`RasterRenderer` (renderCircle(radius)) and Circle.draw(), which delegates to whichever renderer it was given.
solve('raster', 5) → 'raster-circle(5)'
Sample tests
Test #1Vector renderer
Input: ["vector",5]
Output: "vector-circle(5)"
Test #2Raster renderer
Input: ["raster",5]
Output: "raster-circle(5)"
Test #3Different radius
Input: ["vector",10]
Output: "vector-circle(10)"