引用: ゲームプログラマのためのコーディング技術 by 大圖衛玄(Moriharu Ohzu)さん
Singletonクラスと結合しているクラスは、デメテルの法則にも違反します。クラスの独立性がなくなるため、単体テストも難しくなります。
マルチスレッドのプログラムで使用する場合には、グローバル変数へのアクセスと同様の問題が起こります。副作用をともなうメンバ関数には、mutexクラスなどを利用した排他制御が必要です。
どこからでもアクセスできるクラスというと一見便利そうですが、グローバル変数と同様のデメリットがあることを認識した上で使用してください。
デメテルの法則
単純化して説明すると、オブジェクトの"メンバーのプロパティ/メソッド"を直接触らないようにするということ。
簡単に言えば「戻り値として返されたオブジェクトのメソッドを呼び出してはいけない」という法則であり、