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. Using a factory method to obtain an instance can save you a lot of work later. In the code above, TraceFactory returns SystemTrace instances.