Да, я согласен с patheros ... но я хотел бы отметить, что стимул использовать шаблон Flyweight не требует какой-либо дополнительной структуры классов.Стимулом является то, что с помощью шаблона Flyweight вы минимизируете использование общих / тяжелых ресурсов.
Предположим, что все солдаты используют одинаковое графическое представление.Вместо того, чтобы каждый солдат создавал графические данные (т. Е. Какой-то общий «тяжелый» аспект вашей реализации), вы создаете один «шаблонный» объект, который используется всеми солдатами.
class SharedSoldierData {
/** UI representation, big, and common to all. */
byte[] bitmap;
}
class Soldier {
int x,y;
void doMovement(SharedSoldierData extraData) {
// In order to move, this method needs the 'UI' information (a bitmap), which must be provided.
}
}
// example usage:
SharedSoldierData soldierType = new SharedSoldierData(...); // setup with the soldiers bitmap
Soldier soldier1 = new Soldier();
Soldier soldier2 = new Soldier();
// modify the solider x/y locations as the game progresses...
soldier1.doMovement(soldierType); // move soldier 1
soldier2.doMovement(soldierType); // ditto for soldier 2.
У вас будет толькоодин экземпляр класса SharedSoldierData (один экземпляр тяжелого ресурса; в данном случае растровое изображение), но у вас может быть несколько экземпляров класса Soldier.Солдат не может «ничего делать», если ему не предоставлен доступ к тяжелым ресурсным данным ...