
Obj := TObject.Create;try ...finally Obj.Free;end;
现在如果使用依赖注入怎么办:
constructor TfileLister.Create(fileSystem: TfileSystem);
谁应该负责销毁fileSystem对象?所有权原则在这里仍然有效吗?
我知道接口是这个问题的解决方案(感谢它们是引用计数的事实).但是,如果没有接口(比如在一些遗留代码中)呢?在使用依赖注入时,还有哪些其他方法或最佳实践来处理内存管理?
解决方法 您必须为fileSystem对象提供所有者.这可以是创建TfileLister实例的实体,也可以将所有权传递给文件列表器,记录它将释放传递给构造函数的文件系统.正确的方法取决于您的特定应用程序.例如,如果其他对象也将使用相同的文件系统对象,则它不应由其中一个(例如文件列表器)拥有,而是由将它们连接在一起的对象拥有.如果只有一个文件系统对象才有意义,你甚至可以使文件系统对象全局化.
简而言之,你需要做一些比Java更多的思考,但这不一定是坏事.
总结以上是内存溢出为你收集整理的Delphi,依赖注入和内存管理全部内容,希望文章能够帮你解决Delphi,依赖注入和内存管理所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)