Application of Factory Overrides

Recently I have been referring to Cookbook and other websites for Factory Override

Although they all explain the syntax and various ways to Override , I am not sure when should I actually be using it in a real world project .

I have thought of a few application of Sequence N Sequence Item Overrides .

(1) Consider the Top - Level Sequence started from a test . It would contain many sub-sequences .
So via Sequence Override I could override any of the sub-sequence for error injection scenarios

   This  is  one   application  of  Sequence  Override .

(2) Although Overriding sequence item would Need $cast in driver , this can be bypassed by calling methods on the item fetched
The Overridden sequence item would override the methods of base class , so I can get away without modifying the driver .

   This  is  an   application  of  Sequence  Item .

**However I am confused when would I need to override a Component ?

Can it ever have an application for coverage component ?

Any more practical application of Sequence / Sequence Item / Component Override ?**

In reply to Have_A_Doubt:

You are correct that you might override a component to replace one coverage collector with another. Usually this will be done in conjunction with overriding a sequence so that you collect coverage appropriate for the sequence(s) you’re now running. You might also override your scoreboard for similar reasons.

Overriding a driver to match an overridden sequence_item type is also a good idea.

You may also find it easier to override a uvm_env, which would allow you to make multiple changes without having to override multiple types via the factory.