The premise of the book
Refactoring to Patterns by Joshua Kerievsky is that you often don't design a system with specific patterns already in mind. Rather, you come up with a design, recognize problems with the design, see that there is a pattern (or patterns) that addresses the same kind of problems, then refactor your design towards the known pattern(s).
As an example, let's say you have several types of Product. The type of a Product will determine how it will be priced, packaged, and shipped to the customer. A naive designer/developer might write code that involved a series of if-else-if-else statements that look at the product type to determine the pricing/packaging/shipping of a product. However, every time a new product type is added or rules for pricing, packaging, and shipping changes, there are a lot of code changes involved around that if-else-if-else statement. Maintenance of that section of code becomes more difficult over time and the code gets messier and messier each time a change is made.
The astute designer might recognize this situation as a violation of the
Open-Closed Principle and try to apply the
Replace conditionals with Polymorphism refactoring. Then they might see that the
Strategy Pattern can also be applied. So now, the developer/designer starts refactoring the series of if-else-if-else conditionals to different Strategy implementations. When that's done, maintenance of specific rules/policies for a Product Type can be done on a single Strategy implementation instead of having to weed through a big if-else-if-else statement.
In real world situations it is more likely that the design will start out with a big if-else-if-else statement around different Product Types that is then refactored towards the Strategy Pattern rather than someone thinking of using Strategy right out of the gate.