运行时的策略模式

Strategy Pattern at runtime?

本文关键字:模式 策略 运行时      更新时间:2023-10-16

我有一个策略模式,例如,我想在游戏的主循环中运行它。问题是,如果我不删除该实例,并且我也想在其他地方使用该实例,就会出现内存泄漏。如何在策略模式中处理内存分配/释放。

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,但可能会遗漏一些其他考虑因素。