public class Main {
public static void main(String[] args) {
DataStructure s = new DataStructure();
Input in = new Input();
Data x = null;
while ((x = in.readNext()) != null) {
if (x instanceof InsertData) {
s.insert((InsertData)x);
} else if (x instanceof QueryData) {
System.out.println(s.query((QueryData)x));
}
}
}
}
Input
читает вводимые пользователем данные и возвращает их в виде Data
, используя метод Data readNext()
.
Data
может быть InsertData
или QueryData
(они также имеют различные поля, т. е. форма данных для вставки отличается от запроса).
Я хотел бы прочитать Data
и выполнить вставку / запрос для DataStructure s
, в зависимости от типа Data
был возвращен readNext()
.
Код выше - мое простое решение этой проблемы, но он использует преобразование и instanceof, который не является отличным стилем кодирования. Можете ли вы предложить какое-нибудь лучшее решение?
Другое решение, о котором я подумал, было бы иметь метод void performAction(DataStructure s)
в Data
, который был бы переопределен на InsertData
/ QueryData
, и выполнить соответствующее действие на * 1024. *, но я думаю, что излишне связывать DataStructure
с Data
, что тоже не будет хорошим стилем. Это значит, что я хотел бы разделить ввод и выполнение действий, потому что чтение данных и выполнение каких-либо действий с ними - это разные вещи.