Mesmo que você não tenha interfaces explícitas em linguagens dinâmicas, o princípio de inversão de dependência pode ser seguido escrevendo o código do cliente em uma representação abstrata da dependência , que os "implementadores" concretos aderir à digitação via pato.
De certo modo, esse é o padrão em uma linguagem dinâmica, e pode-se argumentar que o princípio de inversão de dependência é seguido sem qualquer esforço consciente. Mas, na prática, vale a pena considerar a representação abstrata de suas classes concretas, para obter mais informações sobre o domínio e para desvincular de qualquer detalhe de implementação que não capture a essência da abstração.