《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#include 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 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++编程技巧和最佳实践。如果你对这些设计模式感兴趣,可以考虑阅读这本书以获取更多详细信息和示例。