フライウェイトパターン
https://gyazo.com/abf864da62206c89947dc50a1e28fc50
Flyweight パターン(フライウェイト・パターン)とは、GoFによって定義されたデザインパターンの1つである。 等価なインスタンスを別々の箇所で使用する際に、一つのインスタンスを再利用することによってプログラムを省リソース化することを目的とする。
大雑把にいうと、文字列専用のハッシュテーブルといったところでしょうか。文字列は不変のため、同一の文字列は同一のメモリ領域を使うことで、全体的なメモリ使用量が節約されます。C#では文字列リテラルで記述された文字列は、必ずインターン化されています。
ゲーム開発では、文字列は大量に扱われるデータの1つのなので、同一文字列が同一メモリ領域を使うことでメモリ使用量は節約できる。 群衆シミュレーションなども同様
逆に、数インスタンスしか存在しないようなものに対して適用すると、無駄な複雑性を生む
いざそれぞれにユニーク性を持たせようとした時に制約になる
具体的なものから共通項を抽象化して、共通処理させることで効率的な処理を行う方法
基本的な目的は、メモリ効率の改善
UnityではBatchを使って SetPass Call を減らして負荷を削減している