总结
豆包 AI 助手文章总结
首页 > 后端开发 > C++ > 正文

C++框架最佳实践中的设计模式

王林
发布: 2024-07-21 13:42:01
原创
426人浏览过

设计模式是 c++++ 框架中的解决方案,可解决常见问题,如:适配器模式:使不兼容类相互协作。单例模式:确保类只有一个实例,提供全局访问。观察者模式:允许对象订阅目标对象事件,并在目标对象状态改变时进行通知。

C++框架最佳实践中的设计模式

C++ 框架最佳实践中的设计模式

引言

设计模式是在面向对象编程中用来解决常见问题的一组解决方案。它们有助于提升代码的可重用性、可维护性和灵活性。在 C++ 框架中,采用合适的设计模式至关重要,能确保代码的健壮性和可扩展性。

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

适配器模式

适配器模式允许不同的类或接口相互协作。它通过提供一个适配器类,将一个接口转换成另一个接口,从而使本来不兼容的类能够共同工作。

// 目标接口
class ITarget {
public:
    virtual void request() = 0;
};

// 适配器类,将 Adaptee 适配为 ITarget
class Adapter : public ITarget {
    Adaptee* adaptee_;
public:
    Adapter(Adaptee* adaptee) : adaptee_(adaptee) {}
    virtual void request() override {
        adaptee_->specificRequest();
    }
};

// 具体类
class Adaptee {
public:
    virtual void specificRequest() {
        // 具体实现
    }
};

int main() {
    Adaptee* adaptee = new Adaptee();
    ITarget* target = new Adapter(adaptee);
    target->request();
    return 0;
}
登录后复制

单例模式

单例模式确保一个类只有一个实例,并提供一个全局访问点。它用于实现全局配置对象、数据库连接池和缓存等场景。

// 单例类
class Singleton {
private:
    static Singleton* instance_;
    Singleton() {}
public:
    static Singleton* getInstance() {
        if (instance_ == nullptr) {
            instance_ = new Singleton();
        }
        return instance_;
    }
};

int main() {
    Singleton* instance1 = Singleton::getInstance();
    Singleton* instance2 = Singleton::getInstance();
    assert(instance1 == instance2); // 始终返回同一个实例
    return 0;
}
登录后复制

观察者模式

观察者模式允许对象在不了解目标对象的情况下订阅其事件。当目标对象状态发生变化时,它会通知所有观察者。这种模式适用于松耦合事件处理和消息传递。

// 目标类
class Subject {
public:
    virtual void attach(Observer* observer) = 0;
    virtual void detach(Observer* observer) = 0;
    virtual void notify() = 0;
};

// 观察者类
class Observer {
public:
    virtual void update() = 0;
};

class ConcreteSubject : public Subject {
    std::vector<Observer*> observers_;
    int state_;
public:
    void attach(Observer* observer) override {
        observers_.push_back(observer);
    }
    void detach(Observer* observer) override {
        auto it = std::find(observers_.begin(), observers_.end(), observer);
        if (it != observers_.end()) {
            observers_.erase(it);
        }
    }
    void notify() override {
        for (auto observer : observers_) {
            observer->update();
        }
    }
    int getState() const { return state_; }
    void setState(int state) {
        state_ = state;
        notify();
    }
};

class ConcreteObserver : public Observer {
    ConcreteSubject* subject_;
public:
    ConcreteObserver(ConcreteSubject* subject) : subject_(subject) {}
    void update() override {
        int state = subject_->getState();
        // 根据状态更新自身状态
    }
};

int main() {
    ConcreteSubject* subject = new ConcreteSubject();
    ConcreteObserver* observer1 = new ConcreteObserver(subject);
    ConcreteObserver* observer2 = new ConcreteObserver(subject);
    subject->attach(observer1);
    subject->attach(observer2);

    subject->setState(10);
    subject->setState(20);
    return 0;
}
登录后复制

这些只是 C++ 框架中众多设计模式中的几个。通过选择和应用适当的设计模式,开发人员可以创建可维护、可扩展且易于使用的代码。

以上就是C++框架最佳实践中的设计模式的详细内容,更多请关注php中文网其它相关文章!

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

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

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

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