Non devi introdurre una nuova interfaccia se sei sicuro al 100% che la classe che stai deridendo non avrà un comportamento polimorfo in futuro.
Di 'se stai prendendo in giro una classe DatabaseHelper che ti aiuta ad accedere ai dati da SQL Server, e sei sicuro che tu (o i tuoi sviluppatori di successo) sicuramente non permetterai di supportare alcun Database aggiuntivo (MySql, Oracle, ecc.) In futuro, puoi prendere in giro direttamente DatabaseHelper senza introdurre una nuova interfaccia.
Tuttavia, la maggior parte delle volte non puoi prevedere il futuro, quindi è meglio che tu introduca un'interfaccia per l'estensione futura.
non usiamo l'interfaccia solo per motivi di testabilità. È il perseguimento della testabilità che ci costringe a scrivere codice estensibile / gestibile introducendo una nuova interfaccia.
Also, why should we avoid static members
I membri statici sono la variabile di stato globale nella sua essenza. Le unità di codice che condividono / accedono allo stato globale sono in genere altamente accoppiate, il che rappresenta una minaccia per la gestibilità, la sicurezza del thread e il test delle unità isolate, ecc.