In reply to Verif Engg:
Only classes can be extended and work with the factory. I suppose Cliff mentions covergroups because both classes and covergroups get constructed with the new() method.
If you were to extend the TLM fifo, you can certainly register the extension with the factory, but the problem is the base TLM fifo is not registered in the base class library. This means you cannot call the create() method of the base class factory object, nor can you specify an override of the base TLM fifo. The same is true for any TLM port. In order to perform an override, both the original requested type and the desired type have to be registered.
I believe that upcoming revisions of the UVM have changed this so most base class library definitions register with the factory.