シングルトン
仕事でデザインパターンのシングルトンを使う機会があったので備忘録として学んだことをまとめておく。
シングルトンはデザインパターンの一つで、あるクラスのインスタンスが常にひとつだけ存在しているような振る舞いをする特徴がある。
自分はこれをエラーログを吐き出すモジュールを作成するために必要になった。
エラーログを書き出すインスタンスはだれがどこから参照してもただ一つであるべきなのでシングルトンとの親和性が良いのかなと自分は
思っています。
自分はc++での実装を経験したのですが、シングルトンの実装方法としてはどの言語でも代替同様なものになるのかな。
コンストラクタをprivateで実装することで別途呼び出せないようにして、getInstanceなる関数からスタティックなinstanceメンバを参照できるようにするそうです。
なんだかもやっとしているのでいろいろ調べてみたらいろいろと奥が深そうでした。
https://www.hyuki.com/techinfo/singleton.html
Singletonを実現するgetInstanceが推奨できない理由 - 神様なんて信じない僕らのために
JavaのSingleton実装方法5つとメリットデメリット使用場面とかいろいろ書いてみる - Qiita
ちなみに、staticなメンバ変数を作ったとき、それはメモリ上のstatic領域(というのがあるらしい)でアドレスが割り振られるらしいです。
メモリ領域には
static
const
stack
heap
があるとききました。
ちなみにローカル変数や関数の引数値を格納するためのstack領域があふれてしまうことをstack over flowというらしいです。
この言葉はここからきてたんですね!?
しかし、調べましたがconst領域というものがあるという記事は見つけられませんでした。
以下の記事なら見つけました
https://craftofcoding.wordpress.com/2015/12/07/memory-in-c-the-stack-the-heap-and-static/
cでは3つのメモリ領域があるらしい。
constはない...