Can I declare one time not multiple time for frequently used syntax?

In reply to UVM_LOVE:

You should do the get on the config_db where you are need this interface. Looking to your env you do nothing with the virtual interface. But the env is a good place to perform the get to retrieve the virtual interface from the config_db, because from there you can connect this to your driver and your monitor. Then you have to make the get only ones.
BTW the get on the config_db should be made in the connect_phase. Then you can be sure all components are existing.

the connect-_phase could look like:

function void connect_phase();
  if(! uvm_config_db#(virtual my_interface)::get(this, "", "vintf_my_interface", vintf))
     `uvm_error("", "!!uvm_config_db get fail!!!!")
  p_driver.vintf = vintf;
  p_monitor.vintf = vintf;
endfunction