如何在共享库的生命周期中存储数据
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在共享库的生命周期中存储数据相关的知识,希望对你有一定的参考价值。
我正在用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
原则,因此我会避免嵌套类。
答案
你可以保证只有Dispatcher
通过将它们设为私有来调用这些方法,然后使Dispatcher
成为friend
。
附:一个_read_only_variable
将是C ++中的const
。编译器会大声抱怨你试图修改它。但它只保证每个数据存储区有一个_read_only_variable
,这非常简单而不是你想要的。
以上是关于如何在共享库的生命周期中存储数据的主要内容,如果未能解决你的问题,请参考以下文章
Android Studio Gradle:请从您的构建脚本中删除 `jcenter()` Maven 存储库的使用/JCenter 已结束生命周期
如何在新的 SwiftUI 应用生命周期中接受 CloudKit 共享?