Чтобы объяснить, я создаю простую игру на Java с помощью Swing. Размер используемого JFrame необходим во многих моих классах. Сначала я просто сделал суперкласс, чтобы содержать переменные, но я вынужден найти что-то другое, потому что Java только позволяет вам продлить один раз, и мне нужно использовать суперкласс по разным причинам. Если это имеет смысл.Каков наилучший способ хранения данных, используемых большинством классов в программе?
Я храню несколько экземпляров одной и той же информации в памяти.
переменные, такие как:
высота JFrame и ширина в пикселях и плитка
высота Карта и ширина в пикселях и плитки
«Плитка» Высота и ширина
Вот некоторый код, чтобы нарисовать картину лучше:
protected static int SCREEN_WIDTH = 928;//Pixels
protected static int SCREEN_HEIGHT = 672;//Pixels
protected static int TILE_WIDTH = 32;//Pixels
protected static int TILE_HEIGHT = 32;//Pixels
protected int MAP_WIDTH = 1280;//Pixels
protected int MAP_HEIGHT = 1280;//Pixels
protected int MAP_WIDTHtile = MAP_WIDTH/TILE_WIDTH;
protected int MAP_HEIGHTtile = MAP_HEIGHT/TILE_HEIGHT;
protected static int XTILES = SCREEN_WIDTH/TILE_WIDTH;//how many tiles can fit on display x axis;
protected static int YTILES = SCREEN_HEIGHT/TILE_HEIGHT;//how many tiles can fit on display y axis;
protected ArrayList<BufferedImage> images;
protected ArrayList<ArrayList<Integer>> displayArray2;
protected ArrayList<ArrayList<Integer>> mapGlobal2;
protected static int xIndex = 0;
protected static int yIndex = 0;
Почти все эти переменные необходимы для нескольких классов на протяжении всей моей программы. И я объявляю это несколько раз в результате. Я не могу не думать, что я выполняю это ужасно, и должен быть лучший способ сделать это. Я также чувствую, что передаю всю эту информацию, поскольку параметры для конструкторов классов - не лучший маршрут.
Посмотрите на «Свойства». Сказав это, я думаю, что это действительно плохая идея «принять» что-либо о вашей среде, а ваши другие классы должны быть предоставлены (или могут быть установлены) фактические, текущие, реальные значения , Либо путем вызова методов (например, 'getWidth' и' getHeight' для компонентов), либо путем передачи информации, необходимой им для принятия решений в качестве параметров для их методов. – MadProgrammer
* «.. используя JSwing (я знаю) ..» * ..You знаете, что это называется Swing (нет J)? –
@AndrewThompson ха кричит. Сегодня я видел много Js. –