Factory method is just a fancy name for a method that instantiates objects.
Let's consider an example. Every program needs a way to report errors. Now if you want to change the Trace implementation that your program uses, you'll need to edit each class that instantiates a Trace implementation. Depending upon the number of classes that use Trace , it might take a lot of work for you to make the change. Plus, you want to avoid altering your classes as much as possible.