c++++ 函数设计模式提供重用和维护函数的标准方式。最常见的模式包括:命令模式:将请求封装到对象中,便于请求的记录、撤销、重做等操作。策略模式:将算法与使用算法的客户端分离,允许客户选择不同的算法。装饰器模式:动态地为对象附加额外职责,例如向日志记录系统添加文件或控制台等日志目的地。
C++ 函数设计模式:深入了解常见策略
在 C++ 中,函数设计模式提供了一种设计函数的标准方式,以便它们可以灵活地重复使用和维护。其中一些最常见的模式包括:
命令模式
立即学习“C++免费学习笔记(深入)”;
将请求封装到一个对象中,从而使请求可以排队、记录、撤销或重做。实战案例:实现一个命令系统,其中用户可以通过菜单或键盘快捷键执行各种操作。
class Command {public: virtual void execute() = 0;};class OpenFileCommand : public Command {public: void execute() override { /* 打开文件 */ }};class SaveFileCommand : public Command {public: void execute() override { /* 保存文件 */ }};class Invoker {public: void setCommand(Command* command) { m_command = command; } void executeCommand() { if (m_command) m_command->execute(); }private: Command* m_command;};int main() { Invoker invoker; invoker.setCommand(new OpenFileCommand()); invoker.executeCommand(); // 打开文件 invoker.setCommand(new SaveFileCommand()); invoker.executeCommand(); // 保存文件}
登录后复制
策略模式
定义一组算法,将算法与使用算法的客户端分离。实战案例:实现一个排序算法库,其中用户可以选择使用不同的排序算法(例如,冒泡排序、归并排序)。
class SortStrategy {public: virtual void sort(vector& data) = 0;};class BubbleSortStrategy : public SortStrategy {public: void sort(vector& data) override { /* 冒泡排序 */ }};class MergeSortStrategy : public SortStrategy {public: void sort(vector& data) override { /* 归并排序 */ }};class SortContext {public: SortContext(SortStrategy* strategy) : m_strategy(strategy) {} void sortData(vector& data) { m_strategy->sort(data); }private: SortStrategy* m_strategy;};int main() { SortContext context(new BubbleSortStrategy()); vector data = {10, 5, 20, 15, 3}; context.sortData(data); // 使用冒泡排序 context.setStrategy(new MergeSortStrategy()); context.sortData(data); // 使用归并排序}
登录后复制
装饰器模式
动态地将额外的职责附加到对象上。实战案例:实现一个日志记录系统,其中可以向各种日志目的地添加功能(例如,文件、控制台)。
class Logger {public: virtual void log(const string& message) = 0;};class FileLogger : public Logger {public: void log(const string& message) override { /* 将消息写入文件 */ }};class ConsoleLogger : public Logger {public: void log(const string& message) override { /* 将消息打印到控制台 */ }};class LoggerDecorator : public Logger {public: LoggerDecorator(Logger* logger) : m_logger(logger) {} void setLogger(Logger* logger) { m_logger = logger; } virtual void log(const string& message) override { /* 预处理或后期处理消息 */ m_logger->log(message); }private: Logger* m_logger;};class TimeStampLoggerDecorator : public LoggerDecorator {public: void log(const string& message) override { /* 在消息中添加时间戳 */ m_logger->log(message); }};int main() { Logger* logger = new ConsoleLogger(); logger = new TimeStampLoggerDecorator(logger); logger->log("日志消息"); // 在控制台中打印带时间戳的消息}
登录后复制
以上就是C++ 函数设计模式:深入了解常见策略的详细内容,更多请关注【创想鸟】其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。
发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2452089.html