Basically you are making the subclasses to decide what to instantiate.
If you need to set specific behavoiur or properties to the instance that is created in the creater class, then this is useful. Also it lets good separation of concerns.
For instance, if "Secretary" timings are different based on the location, then those things can be set in the creater class.
Hope this helps you to understand...