Engenharia Design e Análise
Padrões de projeto em C++: Exemplos práticos e estratégias de resolução de problemas
Table of Contents
Os padrões de design são soluções comprovadas para problemas de programação comuns. Em C++, eles ajudam a melhorar a organização, a reutilização e a manutenção de códigos. Este artigo explora exemplos práticos de padrões de design populares e como eles podem ser aplicados para resolver problemas do mundo real.
Padrão de um único tonelada
O padrão Singleton garante que uma classe tenha apenas uma instância e forneça um ponto global de acesso a ela. É útil para gerenciar recursos compartilhados, como configurações de configuração ou sistemas de registro.
Implementação de exemplo:
Código:]
```cpp class Logger { private: static Logger* instance; Logger () {} public: static Logger* getInstance() { if (!instance) { instance = new Logger(); } return instance; } void log( const std::string& amp; message) { // Log message } }; Logger* Logger::instance = nullptr; ``
Padrão do Método de Fábrica
O padrão Método de Fábrica define uma interface para criar objetos, mas permite que subclasses alterem o tipo de objetos que serão criados. Ele promove acoplamento solto e escalabilidade.
Cenário de exemplo: criar diferentes tipos de documentos.
Código:]
```cpp class Document { public: virtual void create() = 0; virtual ~Document() {} }; class PDFDocument : public Document { public: void create() active { // Create PDF document }; class WordDocument : public Document { public: void create() active { // Create Word document }; class DocumentFactory { public: unique ptr createDocument() active::unique ptr acryDocument() acry::make unique(); }; class WordFactory : public Document Factory { public: std::unique ptr createDocument() acry { return std:::make unique(); } }; ````
Padrão de Observador
O padrão Observer estabelece uma dependência de um a muitos entre objetos de modo que quando um objeto muda de estado, todos os seus dependentes são notificados automaticamente. É útil para implementar sistemas de manipulação de eventos.
Exemplo: um sistema de eventos simples onde vários observadores respondem a uma mudança.
Código:]
```cpp # include # include Observador de classe { public: virtual void update() = 0; virtual ~Observer( {} }; classe Assunto { privado: std::vector observators; public: void attach(Observer* observador) { observator.push back(observador); } void notifit() { para (auto* observador: observadores) { observador-> actualização(); } } } }; ``