Я разрабатываю приложение, у которого есть класс DataManager, который содержит ArrayList<Object[]>
. Поскольку этот ArrayList нужно использовать в других классах, мне интересно, какой будет самый эффективный и быстрый способ доступа к этому списку, учитывая, что это приложение будет работать на платформе Android.
A) создайте public static ArrayList<Object[]> data
в классе DataManager и укажите его в других классах через DataManager.data
B) создать метод public ArrayList<Object[]> getData
в классе DataManager и иметь методы в других классах, создавая локальную переменную ArrayList<Object[]> data = mDataManager.getData()
для временного использования.
C)..?
Мне кажется, что у B больше накладных расходов из-за создания объекта. Также я читаю статические быстрее, чем нестатические?
Вариант B не увеличивает использование памяти, так как у вас будет только один объект ArrayList
(все используемые им объекты просто содержат простую ссылку, а не копию). Объекты, которые используют ArrayList
, могут также хранить эту ссылку как переменную экземпляра, а не запрашивать ее из класса менеджера каждый раз, когда это необходимо.
Я где-то читал, что доступ к переменным экземпляра немного быстрее, чем доступ к переменным класса (static
), но у меня нет ссылки на источник.
Разница в производительности вряд ли будет значимой. Однако вариант В дает вам лучшую инкапсуляцию.
static
. Опция B накладывает небольшие накладные расходы на вызов метода, но не имеет значения. Сосредоточьтесь на ясности дизайна и позвольте компилятору позаботиться об оптимизации кода.