uml for factory pattern