例えば、
ゲーム的に表現してしまうんですが、
ScriptEngine
というクラスがあるとして、
スクリプトをロードして実行する機能を持つとする。
一つのスクリプトデータに関して一つのインスタンスを持つ訳ではなく、
ロードしたデータに関連したハンドル、
ないしは戻り値として関連づけられたインスタンスを返し、
それらが各スクリプト実行の責務を負うとする。
こういうとき、
ScriptEngineというクラスは世界に一つだろうが、
何もSingletonにして全世界に公開する必要はない。
もっと言えば、
EnemyFactoryなんちゃら
みたいなものがあったとして、
これも世界に一つだろうが、
Singletonである必要はない。
クラスはクラスの必要最低限の箇所で稼働すべきで、
安直にグローバルになるべきではない。
GameParameter
とかもそうかも。
「グローバル変数にしたいからSingletonにしてないか?」
をまず考えるべきだと思う。
とか、そういう益体のない話なのでした。
まる。
今日、
若い子に「別にグローバル変数でも良いんじゃないですか」とか言われたけどね ^_^;