da para fazer qualquer programa voltado a interface ao invés de classes ou as vezes é melhor usar herança(por exemplo) para que o programa fique melhor.
exemplo: um programa com herança e sem nenhuma interface da pra refaze-lo usando interface?
Acho que você está confundindo as coisas.
Quando se diz para programar voltado para interfaces, quer dizer que as dependências devem apontar para as interfaces.
Em algum momento você vai precisar implementar as interfaces em classes, afinal as interfaces definem apenas o contrato das operações disponíveis.
A vantagem é que, dependendo somente das interfaces, você pode usar mecanismos de inversão de dependência, como por exemplo Abstract Factories, Factory Methods ou Injeção de Dependência, para obter as instâncias das classes que implementam suas interfaces.
1 curtida