Bridge Pattern Motivation

You have a Shape hierarchy (Circle, Square, Triangle) and a Renderer hierarchy (OpenGL, Vulkan, DirectX). Without Bridge, adding a new renderer requires modifying every shape class. What does Bridge accomplish here?

A

It uses templates to generate Shape-Renderer combinations at compile time

B

It merges Shape and Renderer into a single hierarchy to reduce the number of classes

C

It decouples the Shape abstraction from the Renderer implementation so either can vary independently

D

It creates a factory that selects the correct Renderer for each Shape at runtime