| Integrar interfaces incompatíveis |
Necessidade de usar uma classe com uma interface diferente |
Permite reutilizar código existente |
Pode se tornar um "remendo" permanente e dificultar manutenção |
| Isolar código cliente de mudanças |
Mudanças em uma classe não devem afetar o cliente |
Facilita a manutenção e extensão |
Pode introduzir complexidade desnecessária |
| Promover baixo acoplamento |
Código cliente não precisa conhecer classes concretas |
Facilita a manutenção e extensão |
Pode resultar em código mais verboso |