デザインパターン記事1発目は Singleton( シングルトン ) について書いていきます。

Singleton とは 「一枚札」 といった意味をもっています。

一枚札とは例で挙げるならば トランプ です。

トランプの中に同じ種類、同じ番号のカードが2つとなく唯一つだけあるといったように

プログラム内でも あるクラスの実体が一つだけあるということを保証するための設計手法が Singleton パターンです。 

1つ簡単なクラスを C++ で書いていきます。


シングルトン1枚目


上の例クラスでは実体がいくつも作ることができてしまいます。
コンストラクタが public になっているため外部での宣言、生成ができてしまうのです。

つまり public を private にすることで外部での生成ができなくなります。


まてよ・・・


一個も生成できないじゃないか( ̄□ ̄;)


じゃあ private だからクラス内で生成しよう
これで一個だけ生成できた!

シングルトン3枚目



...無意味( ̄□ ̄;)!!!


これじゃ生成しても外部で使えないですね。
外部で使えるようにするには中で生成したものを外部で取得できるように
しないといけませんね。



シングルトン4枚目


疲れてきました(・・;)

残る問題点はなんでしょうか?

今の段階では

・メンバ関数のため外部でインスタンスを生成して呼び出さねばならない -> 静的メンバ関数にすることで解決

・静的メンバ関数を使用すると インスタンスが2,3個も生成されてしまう ->クラス内部のインスタンスを静的メンバ変数にし、getInstance()関数 以外からはアクセスできないようにすることで解決

・静的メンバ変数にすることで複数生成はされなくなったが、 getInstance()を呼び出すたびにアド静的メンバ変数のアドレスが上書きされメモリリークしてしまう -> メンバ変数が NULL の場合生成し返す、生成されている場合は生成されているものを返すことで解決

上記の3つの問題点を解決したものが Singleton パターンの形です。
複数生成や、メモリリークするといったことがなくなったとおもいます。


シングルトン5枚目


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


おかしな点わからない点あったらコメントお願いします。
こんばんは goolee です。寝れないので勉強した内容書いていこうかな。


今は授業では デザインパターン というものを習っております。


デザインパターンとはなんぞや?

これは C,C++ といったプログラミング言語の知識とは違い


プログラムの設計手法と言ったらいいのでしょうか。


このデザインパターンを用いることで


プログラムの開発がスムーズになるといわれております。


では別の記事で 書いていきます。

こんばんは goolee です。


ここ一週間くらい寝れない日々が続いております。


ただただ寝れない日が続いているのです。(・・;)


ここ一週間の最高睡眠時間は3時間かな、ちょっとやばいんじゃないか?って


思い始めてます。


不眠症になったことがないのでこれは不眠症なのかどうなのかもわからないからどうしようか(-。-;)


とりあえずもうしばらく様子見て寝れなかったら病院いこ...

おはようございます。

昨日の親交会から今の時間まで遊んでおりました(^_^;)

今は家に帰る電車の中から書いております。
あと3時間後には授業…(; ̄ェ ̄)

いやー、大学卒業してから久々に遊びでオールしましたわ。

とりあえず今日の授業は睡魔との闘いやな

がんばりまーす(=゚ω゚)ノ



これから学校内のプログラマとデザイナーの親交会です!

なに話そうかな!

とりあえず終わったらまた投稿します(´,,•ω•,,`)