Я пишу разделяемую библиотеку на C ++, которая будет вызываться через JNI
. У меня есть класс, который получает сообщения от Java и перенаправляет на соответствующий объект. Давайте назовем это Dispatcher
. Существует DataStore
, который должен существовать в течение всей жизни программы. На самом деле некоторые данные должны быть доступны между JNI
вызовами.
Мой текущий набросок состоит из двух классов в виде синглетонов. DataStore
выглядит так:
class DataStore {
// constructors, get_instance() etc. are skipped
int _read_only_variable{};
public:
DataStore (int param) : _read_only_variable(param) {}
// or
void set_data(int param) {
_read_only_variable = param
}
};
Как я могу гарантировать, что только объект Dispatcher
может создать объект DataStore
или только Dispatcher
может вызвать set_data
?
С другой стороны, если я гарантирую, что _read_only_variable
действительно записан только в конструкторе, что обеспечит существование только одного экземпляра.
Я также хочу соответствовать принципу SOLID
, поэтому я бы избегал вложенных классов.