Паттерн Приспособленец представляет себя как уникальный экземпляр в разных местах программы, но по факту не являющийся таковым.
Преимущество
public class Flyweight { private int row; public Flyweight(int theRow) { row = theRow; System.out.println("Объект: " + row); } void report(int col) { System.out.print(" " + row + col); } }
class Factory { private Flyweight[] pool; public Factory(int maxRows) { pool = new Flyweight[maxRows]; } public Flyweight getFlyweight(int theRow) { if (pool[theRow] == null) { pool[theRow] = new Flyweight(theRow); } return pool[theRow]; } }
public class Main { public static final int ROWS = 6, COLS = 10; public static void main(String[] args) { Factory factory = new Factory(ROWS); for (int i = 0; i < ROWS; i++) { for (int j = 0; j < COLS; j++) { factory.getFlyweight(i).report(j); } System.out.println(); } } }
Объект: 0 00 01 02 03 04 05 06 07 08 09 Объект: 1 10 11 12 13 14 15 16 17 18 19 Объект: 2 20 21 22 23 24 25 26 27 28 29 Объект: 3 30 31 32 33 34 35 36 37 38 39 Объект: 4 40 41 42 43 44 45 46 47 48 49 Объект: 5 50 51 52 53 54 55 56 57 58 59