Composite パターン3：パッケージ名の変更
Composite パターン4：nulabバージョン
Composite パターン5：kuidaoredバージョン
Flyweight パターン1:必要なだけインスタンスを生成する
Flyweight パターン2:重複する内容のインスタンスは流用する
Flyweight パターン3:ファクトリークラスを作成し、インスタンスの生成を管理することで、同じ用途のインスタンスが生成されないことを担保する
Strategyパターン
不要なソースコードを削除