Java 哪里是放置将对象保存到SharedReference文件的代码的正确位置

Java 哪里是放置将对象保存到SharedReference文件的代码的正确位置,java,android,Java,Android,我想这是一个相当普遍的面向对象问题,但我得出的结论是,我对对象的思考不够 我有两个班,一个人班和一个人班。我将从几个活动中阅读和编写这些内容(从SharedPerferences文件和到SharedPerferences文件)。现在我有一个PersistData类来处理读写操作。当我想读或写这些家伙时,我会得到PersistData类的一个实例,然后调用PersistData.write(person)等方法;或持久化数据。写(人); 这是一种很好的方法,还是应该将读写代码移到Person和Pe

我想这是一个相当普遍的面向对象问题,但我得出的结论是,我对对象的思考不够

我有两个班,一个人班和一个人班。我将从几个活动中阅读和编写这些内容(从SharedPerferences文件和到SharedPerferences文件)。现在我有一个PersistData类来处理读写操作。当我想读或写这些家伙时,我会得到PersistData类的一个实例,然后调用PersistData.write(person)等方法;或持久化数据。写(人);
这是一种很好的方法,还是应该将读写代码移到Person和People类中?

我通常使用一个类,我调用settingsprovider,调用类似于
new settingsprovider(this).getPerson()的东西
新设置提供者(本)。设置人(人);是的,这正是我要做的。

你所做的看起来是正确的。SharedReference是一个公共文件,由流程中的所有组件共享。我是指应用程序中的所有类。所以,您保存持久化数据并从person和people类访问它的方法看起来干净而正确


由于SharedReference是一个单一文件,因此数据将持久化。

这取决于您如何查看/定义类的职责。
Person
不一定需要知道如何将其存储在共享首选项中,因此像
Person\saveToPrefs()
这样的东西可能被视为糟糕的设计(与共享首选项紧密耦合)

另一方面,
PersistData
不需要知道一个人的序列化格式的细节,因此这种方法有它的弱点


我想最干净的办法就是把整件事分开。一个知道如何将内容存储到共享首选项的类,一个知道如何创建自身的序列化数据但不关心如何使用该序列化数据的类。

感谢大家的输入!