抽象解析对象?

neb*_*ebs 11 parsing abstraction model ios

我想在我的应用程序中使用Parse(parse.com).Parse使用PFObject模型.我想在我的代码中使用我自己的模型(因此它不依赖于解析).如果可能的话,我想设计我的应用程序,以便我可以尽可能无缝地用另一个云服务替换解析.

这是一个好主意吗?抽象模型存储的最佳方法是什么,以便我的应用程序中没有(或最小)Parse代码的痕迹?

也许使用适配器设计模式将解析对象映射到我自己的对象?这应该是一个独立的类还是模型逻辑的一部分?

如果有人尝试过这样的话,我想听听你的想法.我应该直接在我的代码中使用解析模型吗?或者也许是单件工厂根据解析对象生成我的模型?

任何提示/想法/评论?

neb*_*ebs 3

我找到了相对干净的方法来管理这个问题。

基本上,我创建了一个名为NPDictionaryRepresenting“哪些类可以遵循”的协议,以指定如何将它们转换为字典或从字典初始化。

@protocol NPDictionaryRepresenting <NSObject>
- (NSDictionary *)dictionaryRepresentation;
+ (id)objectWithDictionaryRepresentation:(NSDictionary *)dictionary;
@end 
Run Code Online (Sandbox Code Playgroud)

我需要存储在 Parse 中的每个模型都将符合这一点并实现自己的自定义行为。该协议是通过使用字典进行抽象的,因此它不以任何方式依赖于 Parse。

然后我实现了一个 NPNetworkAdapter 基类来处理所有网络存储。我还实现了一个继承自 NPNetworkAdapter 的 NPParseNetworkAdapter 类。这是唯一了解 Parse 的类。它的接口处理符合 NPDictionaryRepresenting 的对象。解析网络适配器能够通过提取对象的字典表示来创建 PFObject。相反,它能够获取 PFObjects 并通过使用字典实例化它们来返回我自己的模型。

这种实现的缺点是它不能很好地处理对象关系(但我正在研究它)。

如果有人对这种方法有任何意见,我很想听听他们的意见。