The problem Strategy solves
Checkout applies a discount. At first there is one rule, so total() has an if. Then marketing adds a percentage-off code, then buy-one-get-one, then loyalty tiers, then a Black Friday rule that expires in four days.
total() is now a hundred-line conditional. It changes for five unrelated business reasons, every change risks the other four, and the tests either mock the clock or run four seconds. Nobody can add a rule without reading all of it.
The clue that this is the wrong shape: the branches don't share anything. They aren't variations on one calculation, they're different calculations that happen to live in the same method.
