デザインパターン記事1発目は Singleton( シングルトン ) について書いていきます。
Singleton とは 「一枚札」 といった意味をもっています。
一枚札とは例で挙げるならば トランプ です。
トランプの中に同じ種類、同じ番号のカードが2つとなく唯一つだけあるといったように
プログラム内でも あるクラスの実体が一つだけあるということを保証するための設計手法が Singleton パターンです。
1つ簡単なクラスを C++ で書いていきます。

上の例クラスでは実体がいくつも作ることができてしまいます。
コンストラクタが public になっているため外部での宣言、生成ができてしまうのです。
つまり public を private にすることで外部での生成ができなくなります。
まてよ・・・
一個も生成できないじゃないか( ̄□ ̄;)
じゃあ private だからクラス内で生成しよう
これで一個だけ生成できた!

...無意味( ̄□ ̄;)!!!
これじゃ生成しても外部で使えないですね。
外部で使えるようにするには中で生成したものを外部で取得できるように
しないといけませんね。

疲れてきました(・・;)
残る問題点はなんでしょうか?
今の段階では
・メンバ関数のため外部でインスタンスを生成して呼び出さねばならない -> 静的メンバ関数にすることで解決
・静的メンバ関数を使用すると インスタンスが2,3個も生成されてしまう ->クラス内部のインスタンスを静的メンバ変数にし、getInstance()関数 以外からはアクセスできないようにすることで解決
・静的メンバ変数にすることで複数生成はされなくなったが、 getInstance()を呼び出すたびにアド静的メンバ変数のアドレスが上書きされメモリリークしてしまう -> メンバ変数が NULL の場合生成し返す、生成されている場合は生成されているものを返すことで解決
上記の3つの問題点を解決したものが Singleton パターンの形です。
複数生成や、メモリリークするといったことがなくなったとおもいます。

最後ちょっと省略しすぎましたかね(^▽^;)
機会があったら省略した部分もソース張りたいと思います。
おかしな点わからない点あったらコメントお願いします。
Singleton とは 「一枚札」 といった意味をもっています。
一枚札とは例で挙げるならば トランプ です。
トランプの中に同じ種類、同じ番号のカードが2つとなく唯一つだけあるといったように
プログラム内でも あるクラスの実体が一つだけあるということを保証するための設計手法が Singleton パターンです。
1つ簡単なクラスを C++ で書いていきます。

上の例クラスでは実体がいくつも作ることができてしまいます。
コンストラクタが public になっているため外部での宣言、生成ができてしまうのです。
つまり public を private にすることで外部での生成ができなくなります。
まてよ・・・
一個も生成できないじゃないか( ̄□ ̄;)
じゃあ private だからクラス内で生成しよう
これで一個だけ生成できた!

...無意味( ̄□ ̄;)!!!
これじゃ生成しても外部で使えないですね。
外部で使えるようにするには中で生成したものを外部で取得できるように
しないといけませんね。

疲れてきました(・・;)
残る問題点はなんでしょうか?
今の段階では
・メンバ関数のため外部でインスタンスを生成して呼び出さねばならない -> 静的メンバ関数にすることで解決
・静的メンバ関数を使用すると インスタンスが2,3個も生成されてしまう ->クラス内部のインスタンスを静的メンバ変数にし、getInstance()関数 以外からはアクセスできないようにすることで解決
・静的メンバ変数にすることで複数生成はされなくなったが、 getInstance()を呼び出すたびにアド静的メンバ変数のアドレスが上書きされメモリリークしてしまう -> メンバ変数が NULL の場合生成し返す、生成されている場合は生成されているものを返すことで解決
上記の3つの問題点を解決したものが Singleton パターンの形です。
複数生成や、メモリリークするといったことがなくなったとおもいます。

最後ちょっと省略しすぎましたかね(^▽^;)
機会があったら省略した部分もソース張りたいと思います。
おかしな点わからない点あったらコメントお願いします。