language-agnostic - 返回对象实例但行为类似于构造函数的静态方法

标签 language-agnostic constructor

所以我有一个可以通过几种方式构造的对象。构造函数具有类似于从文件加载对象的签名:

Object::Object( string filenameToLoadFrom ) ;

它的行为方式非常简单。

Object( "filename.dat" ) ; // loads object from filename

构造函数签名几乎说明了它的作用,尽管静态方法 Load 可能会更好:

static Object* Object::Load( string filenameToLoadFrom ) ;

(上面的语法有点不正确,但你明白了。)

然后我们会遇到这样的情况:构造函数所做的事情从参数中并不是立即显而易见的需要一个名称来从 API 中清楚地了解构造函数的作用。

问题是,仅仅为了能够命名构造函数,编写返回对象实例的静态方法是个好主意吗?

最佳答案

这实际上被认为是常见的secondary benefit of the Factory Method Pattern 。它在特定场景中可能很有用,特别是对于具有相同参数类型但提供截然不同含义的情况。

例如,有一个表示“角度”的类并不罕见,它可以由表示度数或弧度的单个 float 构造。构造函数没有提供足够的上下文(或干净的方法)来实现这一点,其中“工厂方法”使这一点非常清楚。

关于language-agnostic - 返回对象实例但行为类似于构造函数的静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11438984/

相关文章:

web-applications - Web 应用程序的替代品?

language-agnostic - 有关用于错误查找的静态分析的良好介绍性文本?

javascript - FormData 不是构造函数

c++ - 为什么禁用 CObject 的复制构造函数和赋值

c++ - 学习按位编程的资源?

algorithm - 快速几何邻近谓词

language-agnostic - 如何将静态调用排除在类之外

oop - 在 Fortran 中分配和构造多态对象的规范方法是什么?

c# - 构造函数定义中的 ": base"是什么意思?

javascript - 主干错误 View 不是构造函数