Programe para uma interface, não para uma implementação
GoF, p. 18
O primeiro dos dois princípios do livro. Se seu código depende da interface, qualquer implementação serve — e é isso que torna possível trocar, testar e estender.
Strategy · Factory Method · Abstract Factory · Bridge · Adapter