0

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

我有两个类,一个 Person 类和一个 People 类。我将从几个活动中读取和写入这些(从和向 sharedPerferencesFile)。现在我有一个处理读写的 PersistData 类。当我想读或写这些人时,我会得到一个 PersistData 类的实例,然后调用诸如 persistData.write(person); 之类的方法。或 persistData.write(people); 这是执行此操作的好方法,还是应该将读写代码移到 Person 和 People 类中?

4

3 回答 3

0

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

于 2013-08-16T00:05:05.227 回答
0

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

由于 sharedPreference 是单个文件,因此数据将保持不变。

于 2013-08-16T00:12:46.950 回答
0

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

PersistData另一方面,不需要详细了解一个人的序列化格式的外观,因此这种方法在这里有它的弱点。

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

于 2013-08-16T00:52:38.350 回答