Flyweight pattern
インスタンス化されたオブジェクトを効率よく共有することで、リソース消費を抑えるパターン
上記のような性質があるため、環境や状況によって変化しないリソース にのみ用いられる
クラス図
code:mermaid
classDiagram
direction BT
class Flyweight {
methodA()
methodB()
}
class FlyweightFactory {
pool
get_flyweight()
}
class Client
FlyweightFactory --o Flyweight
Client --> FlyweightFactory: Uses
Flyweight: 環境や状況によって変化しない情報のみを持つ、共有されるオブジェクト
FlyweightFactory: 内部に Flyweight オブジェクトを保持(pool)しており、要求された時にそのインスタンスがあればそのインスタンスを、なければ新しく生成して返す(get_flyweight)
Singleton pattern
pros / cons
pros
生成されるオブジェクト数を抑えられる
リソースの消費を抑えられる
cons
コードが複雑化し、理解しづらくなる
共有されるオブジェクトが変更されると、想定外のバグを生む可能性がある
#デザインパターン