《C++ Cookbook》是一本关于C++编程的实用指南,其中包含了许多设计模式的实现方法
单例模式(Singleton Pattern):确保一个类只有一个实例,并提供一个全局访问点。这在需要全局唯一资源或共享状态的场景中非常有用。class Singleton {public: static Singleton& getInstance() { static Singleton instance; return instance; } Singleton(const Singleton&) = delete; Singleton& operator=(const Singleton&) = delete;private: Singleton() {}};工厂模式(Factory Pattern):定义一个创建对象的接口,让子类决定实例化哪个类。这有助于解耦对象的创建和使用。class Product {public: virtual void use() = 0;};class ConcreteProductA : public Product {public: void use() override { // ... }};class ConcreteProductB : public Product {public: void use() override { // ... }};class Factory {public: virtual Product* createProduct() = 0;};class ConcreteFactoryA : public Factory {public: Product* createProduct() override { return new ConcreteProductA(); }};class ConcreteFactoryB : public Factory {public: Product* createProduct() override { return new ConcreteProductB(); }};观察者模式(Observer Pattern):当一个对象的状态发生变化时,自动通知所有依赖于它的观察者。这有助于实现松耦合的系统。#include<vector>#include<algorithm>class Observer {public: virtual void update() = 0;};class Subject {public: void addObserver(Observer* observer) { observers.push_back(observer); } void removeObserver(Observer* observer) { observers.erase(std::remove(observers.begin(), observers.end(), observer), observers.end()); } void notifyObservers() { for (auto observer : observers) { observer->update(); } }private: std::vector<Observer*> observers;};适配器模式(Adapter Pattern):将一个类的接口转换成客户端期望的另一个接口。这有助于在不修改现有代码的情况下,使不兼容的接口能够一起工作。class Target {public: virtual void request() = 0;};class Adaptee {public: void specificRequest() { // ... }};class Adapter : public Target {public: void request() override { adaptee.specificRequest(); }private: Adaptee adaptee;};这些设计模式只是《C++ Cookbook》中的一部分内容,书中还包含了许多其他实用的C++编程技巧和最佳实践。如果你对这些设计模式感兴趣,可以考虑阅读这本书以获取更多详细信息和示例。




