シングルトンクラスは、単一の状態のクラスが何であるか、プログラマーの多くは、大きな頭を感じている、と述べ、それはクラスではなく、やっているクラスをシングルトンになるか、それの多くのインスタンスを持つことができますか?
端的に言えば、単一状態のクラスの例は、誰もがそれを理解するように、唯一のクラスですが、それの唯一のクラスを行う方法の例?混乱し、誰もが、複数の新しいクラスがこのクラスになることができる唯一のいずれかです。例は、新たなどこにでもいると言うことができる。それは、まだカテゴリを達成する方法の一例に過ぎない。右?我々はおよそクラスのインスタンスを実装する方法を理解するであろう考えて逆ならば、実際には、これは、思考の慣性の結果である。カテゴリーAに、我々新しいAをコンパイルするときであるため、任意の場所を右することができ、新たな、我々は。それはまだ達成することができ、新たな新禁止を禁止しませんが、どのように?私たちはバーの操作で新しいコンパイラを見てクラスは、その最初の新しいコンストラクタが(少しのたわごと、もともと新しいコンストラクタがDOと呼ばれているとき....ああ、どのように我々は新しいAでnew演算子をオーバーロードすることができ、構造が呼び出されない場合がありますと呼ばれていますああ、それはこのように多くの、多くの例を生成し、A)のコンストラクタを呼び出して機能。問題の場所は、デフォルトでは、新たな、我々はあまりにも、ああ、オーバーロードされていないされています。これは言った、我々はそれを理解することができますか?そうでない場合は私は、あなたが行くことができることを理解します 行くためにキュウリを食べる。ああ...コンストラクタクラスが公開されている場合、彼らはどこにでも新しいに無料ですが、それがプライベートであれば、それはそれにもちょうど新しい?アイデアをすることができます。単一の状態の宣言クラスは、そのクラスのコンストラクタがあるが、プライベートコンストラクタは?私たちは、このインスタンスをキャプチャする方法を教えてください。最初の質問に、私は、プライベートな機能をあなたを思い出させる方法の例は、外で呼び出すことはできませんが、あなたが呼び出すことができるの内側に宣言することです、右。2番目の質問は、私はあなたに、ライフサイクルと静的メンバ関数のようなものを思い出させることは、それは全体のプロセスサイクルを通じた静的されていないです。そして、私たちは、このインスタンスを返すパブリックメソッドをのみすることができます提供します実現するならば、今、これはまだシングルトンクラスを達成するだけではなく、戻り値の一例に過ぎません。
どのように戻り値を達成するためにはそれだけの一つです?裁判官を追加することができ、それ、例が!= NULLがインスタンスを返した場合、==新しいインスタンスにNULL。ねえ...シンプル。
それを達成するのは簡単に見えます。
クラスA
{
プライベート:
()
{
//メンバーの操作
}
〜A()
{
//削除操作
}
パブリック:
静的A *のgetInstance()
{
もし(NULL == m_instance)
{
m_instance =新しいA;
}
}
プライベート:
* m_instance静的A;クラスの//シングルトンインスタンス
}。
どうでしょうか?シンプル!