MediumTypeScript

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