Domanda spontanea: Qual è il motivo della progettazione per cui una classe di libreria non implementerebbe un'interfaccia come vantaggio per lo sviluppatore? (ad es., la classe della libreria .Net FileInfo )
La classe FileInfo
dipende necessariamente dal file system. Questo ovviamente presenta problemi durante i test unitari. Se dovessi progettare e implementare questa classe per il mio uso interno, risolverei il problema implementando FileInfo
come IFileInfo
corrispondente. Quindi posso iniettare la dipendenza di IFileInfo comunque voglio e codice dipendente da test di unità facilmente.
Ma non implemento FileInfo
da solo, l'ho preso da una terza parte, quindi devo creare un'interfaccia, una classe di wrapping e in qualche modo stub o mock quell'interfaccia per ottenere un risultato simile.
Mi sembra che fornire l'interfaccia come parte della libreria sia un modo ponderato per rendere la vita del futuro sviluppatore più facile e il loro codice più facile da mantenere.
Sarebbe un modo accettabile per progettare una biblioteca, perché o perché?