Building Flexible Systems — The Bridge Design Pattern

Ever worked on a feature where adding a new option suddenly meant changing a ton of existing code?