【发布时间】:2015-12-11 14:25:41
【问题描述】:
我正在尝试改进我的应用程序模型初始化和更新的设计。
我有什么
目前我有一个或多或少的 MVC 结构,模型类具有大部分变量 readonly 并且这些只能通过将应用程序与服务器同步来更新:将接收一个 json 文件并传递一个字典到一个预置的模型类方法
[ModelClass updatewithDictionary:(NSDictionary*)jsonDictionary]
但是通过这种方式,我认为应该保存在我的应用程序的网络层中的所有 json 关键字和结构都必须由模型处理。
另一种选择
另一种解决方案是让模型为read/write,并有一个工厂/初始化器/任何类来实例化或更新它们。不幸的是,这会导致暴露我的模型类的应该是私有的成员。
我在寻找什么
是否有一种模式可以将模型与其实例化分开,让信息隐藏原则得以存在并且不使用代理类(或任何类似 java 的类爆炸生成方法)? c++ 中有点friend 的原则。
【问题讨论】:
-
你试过使用DTO协议吗?
-
不确定它是什么,但如果它是一种自动反序列化数据的方法,那么恐怕不是那么容易,因为我使用的后端服务有古怪的接口,并且数据需要在之前进行预处理初始化模型。你能再解释一下吗?谢谢。
-
基本上,DTO 是一种传输协议。因此,如果您正在向 REST 服务请求资源(假设您要检索“服务”对象的列表),当响应到达时,您知道如何解析它:在复制为 NSObject 或的服务对象中AnyObject 如果你在 Swift 上
标签: objective-c design-patterns model-view-controller