《设计模式解析(第2版•修订版)》—第1章 1.8节特殊对象方法

简介: 所有面向对象语言都会在对象删除时查找并执行相应的析构函数。与构造函数一样,析构函数的使用也是对象“自己负责自己”所要求的。

本节书摘来自异步社区《设计模式解析(第2版•修订版)》一书中的第1章,第1.8节特殊对象方法,作者【美】Alan Shalloway(艾伦•沙洛维) , James R.Trott(詹姆斯•R.特罗特),更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.8 特殊对象方法
设计模式解析(第2版•修订版)
创建和销毁

我已经讨论了可能被其他对象或对象自己调用的方法,但是当对象创建时到底发生了什么事情?当它消亡时又发生了什么?如果对象应该是自成一体的单位,那么它自己包含处理这些情况的方法,将是一个不错的主意。

这些特殊方法事实上确实存在,它们就是构造函数(constructor)和析构函数(destructor,或者终结方法,finalizer)。

构造函数负责初始化或创建一个对象

构造函数是对象创建时自动调用的一个特殊方法,它的目的是处理对象起始时的工作,这是对象“自己负责自己”所要求的。构造函数是一个进行初始化、设置默认信息、设定与其他对象关系或创建一个明确的对象所需的其他工作的天然场所。所有面向对象语言都会在创建对象时查找并执行相应的构造函数。

通过正确使用构造函数,可以更容易消除(或者至少最大程度地减少)未初始化变量,这种错误通常源于开发者的粗心大意。如果代码中有一个固定且一致的地方(即对象的构造函数)进行所有的初始化工作,可以更容易地确保初始化。未初始化变量所引起的错误很容易改正,但很难发现,因此这种约定(以及构造函数的自动调用)能够提高程序员的效率。

析构函数(终结方法)在对象不再需要时(已被删除时)将其清除

大多数面向对象语言都提供了对象不再存在时清除该对象的方式。在C++和C#中称之为析构函数,在Java中称之为终结方法。本书中,我将采用通用术语析构函数称呼这一概念。

所有面向对象语言都会在对象删除时查找并执行相应的析构函数。与构造函数一样,析构函数的使用也是对象“自己负责自己”所要求的。

析构函数通常用于在对象不再需要时释放资源。因为Java有垃圾收集机制(对象不再使用时自动清除)1,析构函数在Java中不像C++中那么重要。在C++中,由对象的析构函数负责销毁只由这个对象使用的其他对象是很常见的。

1.NET语言亦然,包括C#、VB.NET和C++/CLI等。——译者注

本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

相关文章
|
1天前
|
存储 开发框架 .NET
C#中将DataTable转化成ListT的方法解析
C#中将DataTable转化成ListT的方法解析
3 0
|
9天前
项目管理工具计划模板解析:项目管理工具的双重功能与创建方法
本文介绍了项目计划模板的含义和重要性。项目计划模板是用于规划项目结构的可编辑文档,帮助团队明确任务、分配责任和管理时间。模板有助于跟踪项目进度、避免任务冲突,并简化会议安排。创建模板通常涉及选择合适的项目管理工具,如Zoho Projects或Microsoft Excel,然后分解任务、定义日期并持续调整。在Zoho Projects中,用户可以按步骤创建模板,包括命名、添加任务和设置相关细节。
20 0
|
10天前
|
JavaScript 前端开发 算法
vue生命周期函数原理解析,vue阻止事件冒泡方法实现
vue生命周期函数原理解析,vue阻止事件冒泡方法实现
|
10天前
|
前端开发 JavaScript 数据安全/隐私保护
前端javascript的DOM对象操作技巧,全场景解析(二)
前端javascript的DOM对象操作技巧,全场景解析(二)
|
10天前
|
移动开发 缓存 JavaScript
前端javascript的DOM对象操作技巧,全场景解析(一)
前端javascript的DOM对象操作技巧,全场景解析(一)
|
10天前
|
设计模式 算法 搜索推荐
【PHP开发专栏】PHP设计模式解析与实践
【4月更文挑战第29天】本文介绍了设计模式在PHP开发中的应用,包括创建型(如单例、工厂模式)、结构型和行为型模式(如观察者、策略模式)。通过示例展示了如何在PHP中实现这些模式,强调了它们在提升代码可维护性和可扩展性方面的作用。设计模式是解决常见问题的最佳实践,但在使用时需避免过度设计,根据实际需求选择合适的设计模式。
|
11天前
|
机器学习/深度学习 自然语言处理 算法
深度解析深度学习中的优化算法:从梯度下降到自适应方法
【4月更文挑战第28天】 在深度学习模型训练的复杂数学迷宫中,优化算法是寻找最优权重配置的关键导航者。本文将深入探讨几种主流的优化策略,揭示它们如何引导模型收敛至损失函数的最小值。我们将比较经典的批量梯度下降(BGD)、随机梯度下降(SGD)以及动量概念的引入,进一步探索AdaGrad、RMSProp和Adam等自适应学习率方法的原理与实际应用。通过剖析这些算法的理论基础和性能表现,我们旨在为读者提供一个关于选择合适优化器的参考视角。
|
12天前
|
设计模式 Java
Java 设计模式:工厂模式与抽象工厂模式的解析与应用
【4月更文挑战第27天】设计模式是软件开发中用于解决常见问题的典型解决方案。在 Java 中,工厂模式和抽象工厂模式是创建型模式中非常核心的模式,它们主要用于对象的创建,有助于增加程序的灵活性和扩展性。本博客将详细介绍这两种模式的概念、区别以及如何在实际项目中应用这些模式。
16 1
|
13天前
|
缓存 Java Python
Python 弱引用全解析:深入探讨对象引用机制!
Python 弱引用全解析:深入探讨对象引用机制!
21 3
|
14天前
|
存储 JavaScript 开发者
Vue3中的组件间通信:多种方法解析
【4月更文挑战第20天】
8 1

推荐镜像

更多