首页 > 后端开发 > C++ > 正文

探索 C++ 设计模式的常见类型和应用

WBOY
发布: 2024-06-26 15:18:02
原创
777人浏览过

问题: c++++ 中常见的有哪些设计模式及其应用?答案:创建型模式:工厂方法:简化对象创建。单例:确保一个类只有一个实例。结构型模式:适配器:兼容不兼容的接口。装饰器:动态扩展对象功能。行为型模式:观察者:自动通知观察者对象状态更改。策略:动态选择和切换算法。

探索 C++ 设计模式的常见类型和应用

探索 C++ 设计模式的常见类型和应用

设计模式是软件开发中的可重用解决方案,可在不同情况下解决常见问题。了解并应用设计模式对编写健壮、灵活和可维护的 C++ 代码至关重要。

常见 C++ 设计模式类型

立即学习C++免费学习笔记(深入)”;

创建型模式

  • 工厂方法:创建对象的工厂接口,而不是显式指定创建类。
  • 单例:确保特定类仅有一个实例存在。

结构型模式

  • 适配器:使两个不兼容的接口能够一起工作。
  • 装饰器:动态地给对象添加额外的功能。

行为型模式

  • 观察者:当一个对象的状态发生更改时,通知多个观察者。
  • 策略:将不同算法封装为独立的类,以便在运行时动态选择和切换它们。

实战案例

工厂方法模式

class ShapeFactory {
public:
    virtual Shape* createShape(ShapeType type) = 0;
};

class RectangleFactory : public ShapeFactory {
public:
    Shape* createShape(ShapeType type) override {
        return new Rectangle();
    }
};

class CircleFactory : public ShapeFactory {
public:
    Shape* createShape(ShapeType type) override {
        return new Circle();
    }
};

int main() {
    ShapeFactory* shapeFactory = new RectangleFactory();
    Shape* shape = shapeFactory->createShape(RECTANGLE); // 创建一个矩形
    return 0;
}
登录后复制

观察者模式

class Subject {
public:
    virtual void registerObserver(Observer* observer) = 0;
    virtual void removeObserver(Observer* observer) = 0;
    virtual void notifyObservers() = 0;
};

class ConcreteSubject : public Subject {
public:
    void registerObserver(Observer* observer) override {
        observers.push_back(observer);
    }

    void removeObserver(Observer* observer) override {
        observers.erase(find(observers.begin(), observers.end(), observer));
    }

    void notifyObservers() override {
        for (auto observer : observers) {
            observer->update();
        }
    }

private:
    vector<Observer*> observers;
};

class Observer {
public:
    virtual void update() = 0;
};

class ConcreteObserverA : public Observer {
public:
    void update() override {
        cout << "ObserverA updated." << endl;
    }
};

int main() {
    ConcreteSubject subject;
    ConcreteObserverA observerA;
    subject.registerObserver(&observerA);
    subject.notifyObservers(); // 通知所有已注册的观察者
    return 0;
}
登录后复制

以上就是探索 C++ 设计模式的常见类型和应用的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
相关标签:
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号