neb*_*ebs 11 parsing abstraction model ios
我想在我的应用程序中使用Parse(parse.com).Parse使用PFObject模型.我想在我的代码中使用我自己的模型(因此它不依赖于解析).如果可能的话,我想设计我的应用程序,以便我可以尽可能无缝地用另一个云服务替换解析.
这是一个好主意吗?抽象模型存储的最佳方法是什么,以便我的应用程序中没有(或最小)Parse代码的痕迹?
也许使用适配器设计模式将解析对象映射到我自己的对象?这应该是一个独立的类还是模型逻辑的一部分?
如果有人尝试过这样的话,我想听听你的想法.我应该直接在我的代码中使用解析模型吗?或者也许是单件工厂根据解析对象生成我的模型?
任何提示/想法/评论?
我找到了相对干净的方法来管理这个问题。
基本上,我创建了一个名为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 并通过使用字典实例化它们来返回我自己的模型。
这种实现的缺点是它不能很好地处理对象关系(但我正在研究它)。
如果有人对这种方法有任何意见,我很想听听他们的意见。
| 归档时间: |
|
| 查看次数: |
852 次 |
| 最近记录: |