}
}
效果
不必为不需要的功能付出额外的代价
资源管理
问题有时需要精确的控制资源分配和释放的时机,保证资源的异常安全,避免资源泄漏,导致死锁,文件丢失,数据库连接过多等
我见过的解决方法
在缺乏真正的局部对象和析构函数的语言中,try/catch/finally充斥在代码中
使用中间件可帮助解决部分资源管理,如数据库连接等
可能会出现基于aop的资源管理框架
我推荐的解决方法
在c++中,自动化的资源管理是与生俱来的,即b.s.提出的“资源管理即初始化”(raii)
在c#中,可使用using+idispose取得近似raii的效果
在java中,我不知道,讨论一下
|
[c++,raii,仅仅示例,操作文件应首选std::fstream等] class file { public: explicit file(string path){ pf = fopen(path.c_str(), "rwb"); } ~file(){ fclose(pf); } operator file* (){ return pf; } private: file* pf; }; [c++,raii的客户代码,仅仅示例,操作文件应首选std::fstream等] void test() {
本文关键:The Programming Language Tips
相关方案
|