Вы можете использовать командный шаблон. Если вы добавите их в стек, у вас есть история.
Каждая команда имеет всю информацию, необходимую для выполнения ее задачи.
Это, конечно, означает, что каждая команда отличается друг от друга, и ее довольно сложно хранить и запрашивать у них для представления определенного пользователя (потому что пользователю необходимо видеть информацию из команд, вызванных другими пользователями (например, «Сильмариллион» за 15:00 отслеживаемого элемента упал в цене). от 15 до 12,50 евро).
Вы можете представить команду в базе данных следующим образом:
Command
-------
id
name
timestamp
user
CommandParameters
-----------------
commandId
name
value
Теперь вы можете создать запрос, который показывает все соответствующие команды для пользователя или определенного элемента, который пользователь имеет в своем списке наблюдения (вы можете добавить таблицу, содержащую все команды, относящиеся к пользователю и элементу)
HistoryBuilder
--------------
viewName
commandName
filterField
Где для пользователя вы получаете все команды, которые могут быть выполнены конечными пользователями, а для предметов вы получаете все команды, связанные с такими предметами, как обновление цен, изменение запасов и т. Д.
Теперь вы можете предоставить адаптеры для создания более удобных сообщений от этих команд. Таким образом, вы можете использовать те же команды в других контекстах с другим адаптером поверх него.
Надеюсь, это продвинет вас дальше.