软件架构中的析构函数模式

问题描述 投票:-1回答:1

正如工厂模式,构建器模式等是创建模式。

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

如果有的话......说出一些。

design-patterns architecture software-design
1个回答
2
投票

在像C ++这样的手动内存管理语言中,析构函数用于清理资源,如分配的对象,打开的文件句柄等。

如果一个对象A引用了对象B并且A对于B的生命周期是可重用的,那么在它的析构函数A中必须调用delete B,以便它的析构函数被调用。这样可以确保删除作为A的一部分分配的所有对象,并将内存返回给系统,否则会导致内存泄漏。

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

在这些语言中,对象仍然可以分配文件,获取锁,启动计时器等资源,以便在不再需要它们来释放这些资源时需要执行操作。

在这些语言中使用The Dispose pattern

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

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

我没有太多的Java经验,所以据我所知Java 7引入了AutoClosable,但它与try {} finally {}一起使用

在C#中,您还可以添加一个终结器,而不是在对象被垃圾回收时调用。您可以使用此终结器来释放资源或添加在GC之前正确处置对象的断言以捕获错误。我用它来捕获分配重要资源的对象的bug,而且很难找到bug来自何处。

© www.soinside.com 2019 - 2024. All rights reserved.