\
您当前的位置 : 首页 >> 帮助中心

C++ lambda 表达式在设计模式中的运用

来源:恩氏滤油机
时间:2024-09-23
浏览量:0

c++++ lambda 表达式在设计模式中的作用:战略模式:简化策略对象的创建,无需独立类。命令模式:轻松创建命令对象,实现可重用且松散耦合的操作。观察者模式:简化观察者的创建,实现松散耦合的通信。

C++ Lambda 表达式在设计模式中的运用

简介

Lambda 表达式是一种匿名函数,它允许在无需显式定义函数名称的情况下定义代码块。在 C++ 中,lambda 表达式通常用于创建简单的匿名回调或函数传递给其他函数。在设计模式中,lambda 表达式可以巧妙地简化代码,提高可读性和灵活性。

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

战略模式

战略模式允许我们通过将算法封装成对象来改变对象的执行行为。lambda 表达式可以简化策略对象的创建,无需使用独立的类:

class Context {
public:
    void setStrategy(function strategy) {
        this->strategy = strategy;
    }

    int executeStrategy(int a, int b) {
        return this->strategy(a, b);
    }
private:
    function strategy;
};

int main() {
    Context context;
    context.setStrategy([](int a, int b) { return a + b; });
    cout << context.executeStrategy(1, 2) << endl; // 输出:3
    return 0;
}

命令模式

命令模式允许我们以可重用且松散耦合的方式表示和执行操作。lambda 表达式可以轻松创建命令对象,使代码更加简洁:

class Command {
public:
    virtual void execute() = 0;
};

class ConcreteCommand1 : public Command {
public:
    ConcreteCommand1() { this->action = []() { cout << "Command 1 executed" << endl; }; }
    void execute() override { this->action(); }
private:
    function action;
};

int main() {
    vector commands;
    commands.push_back(new ConcreteCommand1());
    commands.push_back(new ConcreteCommand1());

    for (auto command : commands) {
        command->execute();
    }
    return 0;
}

观察者模式

观察者模式允许对象通过订阅事件并进行相应的反应来松散耦合地通信。lambda 表达式可以简化观察者的创建:

class Subject {
public:
    void addObserver(function observer) {
        this->observers.push_back(observer);
    }

    void notifyObservers() {
        for (auto observer : this->observers) {
            observer();
        }
    }
private:
    vector> observers;
};

int main() {
    Subject subject;
    subject.addObserver([]() { cout << "Observer 1 notified" << endl; });
    subject.addObserver([]() { cout << "Observer 2 notified" << endl; });

    subject.notifyObservers();
    return 0;
}

结论

Lambda 表达式在 C++ 设计模式中是一个强大的工具,可显著提高代码的可读性、灵活性、可重用性和可维护性。通过创建简短、易于理解的代码块,我们可以实现复杂的设计模式而不会引入不必要的复杂性。

以上就是C++ lambda 表达式在设计模式中的运用的详细内容,更多请关注本网内其它相关文章!

免责申明

以上展示内容来源于合作媒体、企业机构、网友提供或网络收集整理,版权争议与本站无关,文章涉及见解与观点不代表恩氏滤油机网官方立场,请读者仅做参考。本文欢迎转载,转载请说明出处。若您认为本文侵犯了您的版权信息,或您发现该内容有任何涉及有违公德、触犯法律等违法信息,请您立即联系我们及时修正或删除。
Copyright © 2004-2025 BaiJiaMai.Com 2026年世界杯48队比赛规则 版权所有  网站备案号:渝ICP备2024041059号
Baidu
map