Skip to content

Latest commit

 

History

History
133 lines (101 loc) · 3.53 KB

README.md

File metadata and controls

133 lines (101 loc) · 3.53 KB

Design Patterns in PHP

License MIT PHP

Cosa sono

Si tratta di soluzioni progettuali a problemi ricorrenti.

Le caratteristiche di un design pattern

Un Design Pattern è composto di quattro parti fondamentali:

  • Nome
  • Problema
  • Soluzione
  • Conseguenze

Nome

Una o più parole che lo identificano

Problema

Si tratta della descrizione della situazione nella quale il design pattern può essere applicato o in generale delle motivazioni del suo utilizzo.

Soluzione

Si tratta della descrizione dell'insieme di classi e della interazione tra di esse che risolve il problema, senza scendere nei dettagli dell'implementazione.

Conseguenze

Risultati dell'applicazione del design pattern che possono influenzare la scelta di quale pattern utilizzare, oppure della implementazione in uno specifico linguaggio.

A cosa servono

Il loro utilizzo permette di applicare soluzioni ampiamente collaudate, ottimizzando la struttura e la manutenzione del software.

Classificazione dei design pattern

I design pattern sono classificati in base a due diversi criteri:

  • ambito: specifica se il pattern si applica alle classi o agli oggettti
  • scopo: si tratta dell'obiettivo che il pattern punta ad ottenere:
    • creazione di un oggetto,
    • definizione della struttura di classi/oggetti o di una loro composizione,
    • definzione del modo in cui classi e oggetti si comportano e interagiscono tra di loro

Classificazione dei design patterns tabella

Scopo
Creazione Struttura Comportamento
Ambito Classi
  • Facthory Method
  • Adapter (class)
  • Interpreter
  • Template Method
Oggetti
  • Abstract Factory
  • Builder
  • Prototype
  • Singleton
  • Adapter (object)
  • Bridge
  • Composite
  • Decorator
  • Facade
  • Proxy
  • Chain of Responsability
  • Command
  • Iterator
  • Mediator
  • Memento
  • Flyweight
  • Observer
  • State
  • Strategy
  • Visitor

Licenza

Questo progetto sotto licenza MIT.