Create one product through an overridable or strategy-driven construction point instead of scattering concrete instantiation across the codebase.
Factory Method is the creational pattern you reach for when object selection varies, but the rest of the workflow should stay stable. In Java, that often means keeping orchestration logic in one place while letting subclasses or pluggable creators choose which concrete product to supply.
This pattern is especially useful when switch-based creation starts spreading, when extension points matter, or when a superclass defines the surrounding algorithm but not the concrete dependency. It is less useful when a plain static factory or a dependency-injected supplier would be simpler.
Read this section with one question in mind: is creation variability the real design axis here, or are you just avoiding a constructor call?