In reply to raja.kuraku:
By default the constructor new() will create the class object (i.e., allocate space for all the properties/methods in the memory). Often new(), is also used to initialize the properties of the class object.
On the other hand a create() call, first determines the type of the object (by looking at the factory overrides for the given type) that needs to be created and then calls ‘new’ to create the object.
So, you can think of create() as “new() + some more code”.
Note that you have to first register a class with the factory before using create() to create the object.
If factory registration is not done, new() can be used to create a driver (or for that matter any class object), but cannot use factory create method as it can’t find the type to be created from the factory.