1

是否存在 __construct() 会被声明为公开的情况?

如果是这样,为什么?

4

3 回答 3

1

使构造函数私有或受保护的一个常见示例是实现单例模式。请参阅此答案以获取 PHP 示例。

于 2013-03-09T20:35:24.500 回答
1

在类中使用构建器模式时,以及为类添加静态工厂方法时,我也会使用私有构造函数。

两者都可以帮助您避免创建过多的构造函数,还可以帮助您创建具有有意义名称的构造函数。例如,而不是:

new Robot(2, 4, 255, 0, 0)

您可以使用构建器创建:

RobotBuilder.withNumberOfArms(2).withColor(255,0,0).withNumberOfEyes(2).build()

由于构建器位于类内部,因此只有它可以调用其私有构造函数。

对于静态工厂方法,您可以看到这些:

public static Robot createFourArmedRobot();
public static Robot createBlindRobot();

对于其他开发人员来说,比两个具有自定义参数的构造函数更有意义。(更多与 OOP 相关而不是 php)

于 2015-10-20T19:00:12.337 回答
0

通常我们将 __construct() 作为与设计模式相关的单例模式的私有,以了解更多关于它的信息,请访问此页面 - http://en.wikipedia.org/wiki/Singleton_pattern

于 2013-03-09T20:36:31.633 回答