Design patterns: Adapter

data: · 2 min
autore: Mauto
serie: Design Patterns/ parte 7/24

I pattern classici della Gang of Four, uno per puntata, con esempi pratici in PHP.

  1. Design Patterns
  2. Design patterns: Singleton
  3. Design patterns: Factory Method
  4. Design patterns: Abstract Factory
  5. Design patterns: Builder
  6. Design patterns: Prototype
  7. Design patterns: Adapter
  8. Design patterns: Bridge, cos’è e come usarlo (esempio PHP)
  9. Design patterns: Composite
  10. Design patterns: Decorator
  11. Design patterns: Facade, cos’è e come usarlo (esempio PHP)
  12. Design patterns: Flyweight
  13. Design patterns: Proxy
  14. Design patterns: Chain of Responsibility, cos’è (esempio PHP)
  15. Design patterns: Command
  16. Design patterns: Interpreter
  17. Design patterns: Iterator
  18. Design patterns: Mediator
  19. Design patterns: Memento
  20. Design patterns: Observer
  21. Design patterns: State, cos’è e come usarlo (esempio PHP)
  22. Design patterns: Strategy
  23. Design patterns: Template Method
  24. Design patterns: Visitor
tutta la guida >

Il pattern Adapter è un design pattern strutturale che consente a interfacce incompatibili di lavorare insieme.

Caratteristiche dell’Adapter pattern

  1. Compatibilità tra Interfacce: L’Adapter Pattern permette di adattare un’interfaccia esistente a un’altra interfaccia che il client si aspetta, rendendo classi incompatibili in grado di lavorare insieme.
  2. Separazione delle Responsabilità: Favorisce la separazione tra il codice client e le classi che devono essere adattate. Il client non deve modificare il proprio codice per utilizzare le classi adattate.
  3. Riutilizzo del Codice Esistente: Consente di riutilizzare classi esistenti senza modificarle, facilitando l’integrazione di nuove funzionalità in un’applicazione.
  4. Flessibilità: Gli adapter possono essere facilmente creati per adattare nuove classi, rendendo l’applicazione flessibile e facilitando l’integrazione di diversi componenti.
  5. Traduzione delle Chiamate: Traduce le chiamate del client nel formato atteso dalla classe adattata.
  6. Possibilità di Adattare Diversi Tipi di Classi: Può adattare sia classi che interfacce, consentendo di lavorare con vari tipi di componenti, inclusi oggetti esterni o librerie di terze parti.
  7. Sviluppo Incrementale: Facilita un approccio di sviluppo incrementale, permettendo di aggiungere nuove funzionalità o componenti senza dover ristrutturare l’intero sistema.

Esempio in PHP:

class OldPaymentSystem {
    public function pay() {
        return "Pagamento con il vecchio sistema.";
    }
}

interface NewPaymentInterface {
    public function processPayment();
}

class PaymentAdapter implements NewPaymentInterface {
    private $oldSystem;

    public function __construct(OldPaymentSystem $oldSystem) {
        $this->oldSystem = $oldSystem;
    }

    public function processPayment() {
        return $this->oldSystem->pay(); // Adattiamo il vecchio metodo al nuovo sistema.
    }
}

// Utilizzo
$oldPayment = new OldPaymentSystem();
$adapter = new PaymentAdapter($oldPayment);
echo $adapter->processPayment();

TORNA ALLA GUIDA

Copiato