I modelli di progettazione sono soluzioni collaudate per i problemi di programmazione comuni. In C++, aiutano a migliorare l'organizzazione del codice, la riutilizzabilità e la manutenbilità. Questo articolo esplora esempi pratici di modelli di design popolari e come possono essere applicati per risolvere i problemi del mondo reale.

Modello Singleton

Il modello Singleton garantisce che una classe abbia un'unica istanza e fornisce un punto di accesso globale a essa, utile per gestire risorse condivise come le impostazioni di configurazione o i sistemi di registrazione.

Esempio di attuazione:

Codice:

``cpp class Logger { privato: istanza statica Logger*; Logger() {} pubblico: statico Logger* getInstance() { se (!instance) { istanza = nuovo Logger(); } istanza di ritorno; } log vuoto(const std::string& message) { // Log message }; Logger* Logger::instance null

Modello di metodo di fabbrica

Il modello Factory Method definisce un'interfaccia per la creazione di oggetti, ma consente alle sottoclassi di modificare il tipo di oggetti che verranno creati, promuove l'accoppiamento sciolto e la scalabilità.

Scenario di esempio: creazione di diversi tipi di documenti.

Codice:

(EN) Factory } Factory }; class PDFDocument: public Document { public): void create() override {};

Modello di Osservatore

Il modello Observer stabilisce una dipendenza da un oggetto all'altro, in modo che quando un oggetto cambia lo stato, tutti i suoi dipendenti vengono notificati automaticamente.

Esempio: un semplice sistema di eventi in cui più osservatori rispondono a una modifica.

Codice:

} ¿cpp #include class Observer { public: virtual void update() = 0; virtual ~Observer() {} }; class Soggetto { privato: std::osservatori vettoriali; public: void allega(osservatore Observer*) { osservatori.push back(osservatore); } void notifica() { per (osservatore automatico*): osservatoriupdate) {