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();

他の開発者にとっては、カスタム パラメーターを持つ 2 つのコンストラクターよりもはるかに意味があります。(PHPよりもOOPに関連しています)

于 2015-10-20T19:00:12.337 に答える
0

通常、デザインパターンに関連するシングルトンパターンのプライベートとして __construct() を実行して、詳細を確認するには、このページを参照してください - http://en.wikipedia.org/wiki/Singleton_pattern

于 2013-03-09T20:36:31.633 に答える