In C # / Java, il principio di inversione delle dipendenze è spesso dimostrato da classi di alto livello che dipendono su un'interfaccia / astrazione (che possiede). Le classi di basso livello implementeranno l'interfaccia, invertendo così la dipendenza.
Mi chiedo, come viene applicato nei linguaggi orientati agli oggetti senza interfaccia? Ad esempio, non sono un esperto di Ruby, ma sembra che in questa lingua non sia possibile definire interfacce come in Java / .NET