Game
クラスがあり、それはGenerator
のクラスによって生成されるいくつかのリソースを必要とします。すべてのゲームには独自のジェネレータがあり、ジェネレータはインスタンス化するための重いオブジェクトであるため、Game
はインスタンスでオブジェクトプールを保持します。カプセル化を中断するラムダを返すための悪い設計記号です
private MapBoardGenerator(Game game) {
super(game);
}
public static MapBoardGenerator getInstance(Game game) {
MapBoardGenerator instance = game.getGenerator(MapBoardGenerator.class);
if (instance == null) {
instance = new MapBoardGenerator(game);
game.addGenerator(MapBoardGenerator.class, instance);
}
return instance;
}
この静的メソッドはGenerator
を拡張するすべてのクラスでほとんど同じである:すべての発電機では、私はこれらのようなメソッドを持っています。
私はSupplier<MapBoardGenerator>
ので、コントロールが別の場所で行われますgame
に提供されてやりたいとgetInstance
方法は、単純に次のようになります。私はプライベートコンストラクタを呼び出すサプライヤーを渡すと
public static MapBoardGenerator getInstance(Game game) {
return game.getInstance(MapBoardGenerator.class, MapBoardGenerator::new);
}
が何か問題はありますか?それは大学のプロジェクトであり、デザインはここでは大変重要です。
そして、何が表示されません? –