Я создаю несколько потоков, которые будут собирать данные из базы данных.Полиморфизм и локальные переменные
Однако во всех этих нитях я потребуется локальная ссылка на мой Database
объект, насколько я знаю, что есть два способа сделать это либо я использовать интерфейс:
public interface Command {
void execute();
void collectData();
void processData();
void setData(ArrayList<Objects> data);
}
А затем установите переменную вручную в каждом из классов thead (который расширяет командный интерфейс)
Однако, выполняя свой тест и поиск, я обнаружил, что могу делать следующее:
public abstract class commandtest implements Runnable{
Database db;
abstract void execute();
abstract void collectData();
abstract void processData();
abstract void setData(ArrayList<Objects> data);
}
Здесь у вас есть абстрактный класс, который может расширить каждый из моих объектов потока, а затем создать конструктор для установки необходимых переменных.
Мой вопрос довольно прост, какой из этих двух методов является наилучшей оценкой?
Нет «лучшего», есть «лучшее для ситуации». –
@DaveNewton Как мне это решить? какие факторы я должен принять во внимание? –
У меня был бы объявленный интерфейс и абстрактный класс, который реализует интерфейс, который имеет атрибут 'protected Database db', –