软件架构中的析构模式

时间:2019-04-27 12:10:52

标签: design-patterns architecture software-design

工厂模式构建器模式等都是创意模式

是否存在任何析构函数模式

如果有的话...给些名字。

1 个答案:

答案 0 :(得分:2)

在具有手动内存管理的语言(如C ++)中,析构函数存在以清理资源(如分配的对象,打开的文件句柄等)。

如果对象 A 引用了对象 B ,并且在 B 的生命周期内可以使用 A >然后在它的析构函数中 A 必须调用 delete B ,因此它的析构函数被称为等等。这样可以确保删除所有分配为 A 的对象,并将内存返回给系统,否则会发生内存泄漏。

在具有自动内存管理(垃圾收集)的语言中,不需要对象删除它包含的其他对象,因为系统会删除所有未使用的对象。

在这些语言中,对象仍然可以分配资源,例如文件,获取锁,启动计时器等,因此当不再需要释放这些资源时,就需要执行操作。

在这些语言中,使用The Dispose pattern

通常情况下,此模式由释放这些资源的方法(关闭,销毁,释放等)组成,必须调用该方法。通常,它用于try {} catch {} finnaly {}结构的finnaly {}块中。

C#具有 IDisposable 接口,可以与 using 声明一起使用,因此它具有对它的支持。

就我所知,Java 7引入了AutoClosable,但我对Java没有太多的经验,但是它与try {}最终{}一起使用

在C#中,您还可以添加一个终结器,该终结器比对象被垃圾回收时调用的终结器大。您可以使用此终结器来释放资源或添加断言,即在GC捕获错误之前,已正确处置了对象。我用它来捕获分配重要资源的对象的错误,很难找出错误的来源。