运行时的策略模式
Strategy Pattern at runtime?
我有一个策略模式,例如,我想在游戏的主循环中运行它。问题是,如果我不删除该实例,并且我也想在其他地方使用该实例,就会出现内存泄漏。如何在策略模式中处理内存分配/释放。
CompressionContext *ctx = new CompressionContext();
//we could assume context is already set by preferences
ctx->setCompressionStrategy(new ZipCompressionStrategy());
//get a list of files
ctx->createArchive(fileList);
使用std::shared_ptr<CompressionContextBase>
而不是CompressionContextBase*
(即原始指针)。
编辑:这只是一个建议,根据您提供的信息,可能还有其他具有不同语义的智能指针实现,例如unique_ptr
,可能更适合。正如@akappa所建议的那样,你可能需要更多地阅读这个主题,以做出更好的决定——同样,根据问题中的信息,你可能想要一个shared_ptr
,但可能会遗漏一些其他考虑因素。
相关文章:
- 如何实例化基于输入的策略模式
- 使用策略模式设计软件时出现的问题
- 在没有指针的情况下以C 实施策略模式
- 如何将策略模式与派生类中的其他方法一起使用
- 与仿制药的C 中的策略模式
- 策略模式或函数指针
- 递归策略模式
- 运行时的策略模式
- 策略模式中应该使用安全指针吗
- 为什么我不能进行动态演员表?C 语言中的策略模式
- C++模板中的策略模式
- 处理请求的策略设计模式
- 在一个简单的策略模式的bug
- c++策略模式
- 方法指针和继承//类策略模式(C++)
- 文件解析器使用类似策略的模式-如何获得结果
- 使用策略设计模式实现输入类
- 如何将策略模式与 STL 容器一起使用
- C++实时策略模式来处理不同的数据
- C++模式策略初始化