У C++ ми допоможемо покращити роботу з використанням програмного забезпечення, реузабельності та підтримки. У статті досліджуються практичні приклади популярних моделей дизайну та як їх можна застосувати для вирішення реальних проблем у світі.

Одиночний візерунок

У програмі Oneton передбачено, що клас має лише одну екземпляр і надає глобальну точку доступу до неї. Він корисний для управління загальними ресурсами, такими як налаштування конфігурації або системи заправки.

Приклад виконання:

Код:]

`````cpp class Logger { private: static Logger* екземпляр; Logger() {} громадськість: статичний Logger* getInstance() { if (!instance) { екземпляр = новий Logger(); } } } } } } } } }; ````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````

Фабричний метод шаблон

Патерн Фабричний метод визначає інтерфейс для створення об'єктів, але дозволяє підкласи змінювати тип об'єктів, які будуть створені. Він сприяє розпушуванню та масштабованості.

Приклад сценарію: створення різних видів документів.

Код:]

````cpp class Document { громадськість: віртуальна неїдна будова() = 0; віртуальна ~ документація() {} }; клас PDFДокумент : публічний документ { громадський: недійсний створення() наднаряддя { // Створити PDF-документацію; клас WordDocument() = 0; віртуальний ~DocumentFactory()) наділений { // Створити документ Word; клас Документація: громадський метод { uk uk uk uk uk uk uk uk uk uk uk uk uk uk uk uk uk uk uk uk uk uk uk uk uk uk uk uk uk uk uk uk uk uk uk uk uk uk uk uk uk

Список учасників

У статті спостерігача встановлено одноосібну залежність між об’єктами, щоб при зміні одного об’єкта, всі його залежності автоматично означають. Корисно для реалізації систем обробки подій.

Приклад: простий західний комплекс, де кілька спостерігачів відповідають на зміну.

Код:]

`````cpp #включає в себе клас спостерігача { громадськість: віртуальне оновлення недійсне = 0; віртуальне ~Observer() {}; class Тема { private: std:vectorlistrs; громадськість: недійсний прикріпок(Observer) {listrs.push back(observer) } } back(observer) { для (auto* спостерігач : спостерігачі) { спостерігачі) {listr->update();;;;;`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````