将对象保存到共享首选项文件的代码放在哪里的适当位置

时间:2013-08-16 00:00:54

标签: java android

我想这是一个相当通用的面向对象的问题,但我得出的结论是我对对象的看法不够。

我有两个类,一个Person类和一个People类。我将从几个活动中读取和写入这些(来自sharedPerferencesFile)。现在我有一个处理读写的PersistData类。当我想读或写这些人时,我得到一个PersistData类的实例,然后调用像persistData.write(person)这样的方法;或者persistData.write(people); 这是一个很好的方法,或者我应该将读写代码移到Person和People类中吗?

3 个答案:

答案 0 :(得分:0)

我通常使用我调用settingsprovider的类,调用类似new SettingsProvider(this).getPerson();new SettingsProvider(this).setPerson(person); so yes, this is exactly how i would do it.的内容

答案 1 :(得分:0)

你在做什么看起来是正确的。 SharedPreference是一个公共文件,由进程中的所有组件共享。我的意思是应用程序中的所有类。因此,保持PersistData并从人和人类中访问它的方式看起来干净利落。

由于sharedPreference是一个单独的文件,因此数据将具有持久性。

答案 2 :(得分:0)

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

另一方面,

PersistData不需要知道一个人的序列化格式如何详细查看,因此这种方法在这里有弱点。

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