如何在使用 RestKit 的项目中设计类?

Posted

技术标签:

【中文标题】如何在使用 RestKit 的项目中设计类?【英文标题】:How to design classes in project that uses RestKit? 【发布时间】:2013-11-30 13:56:22 【问题描述】:

这是关于类设计的理论问题(Objective-C,RestKit)。

我几天前开始了这个项目,我写了一些测试,现在我已经知道服务器响应的样子了。应用程序将使用RestKit。在应用程序中,其中一类将是例如ABCUser。应用程序应该能够使用凭据注册和登录用户到服务器,服务器应该返回完整的ABCUser 对象。在客户端(ios App)端应该如何设计?

现在我有了ABCUser 类,它具有用户名、密码、电子邮件和其他内容等属性,还有一个类别ABCUser+API,它具有用于与服务器通信的类方法(registerUser:withBlock:loginUser:withBlocklogoutUser:withBlock:)。当我想通过应用程序注册用户时,我只需要使用凭据创建ABCUser 对象,并且我必须将其发送到服务器,然后我从服务器接收完整的对象。是好的设计吗?

也许我应该使用ABCUser 类的一些Proxy 对象来登录?此类将仅具有类似凭据的属性。是好意吗?

也许好的解决方案是为注册和登录用户创建一些服务类?可能是ABCRegisterServiceABCLoginService

提前感谢您的 cmets。

【问题讨论】:

【参考方案1】:

这是相当基于意见的,取决于您的习惯和习惯。您当前的解决方案是可以接受且极简的。该类别的用途相对清楚,并且将来应该可以维护。

您的其他建议添加了更多课程,但效果并不明显。他们将从模型中删除可能被归类为不合适的代码,但它们也会使代码库更加冗长,更难理解和维护。除非您有整体服务或基于代理的方法,否则这不太可能有帮助。

您当前的解决方案可能缺少的主要内容是整体 API 结构和活动/连接管理。通过将 API 方法放在每个模型对象的类别中,更难看到 API 形状,并且随着 API 的增长和允许更复杂(有用)的功能,您在模型对象之间添加了无意义的依赖关系。管理并发连接的数量也更加困难。对此的适当解决方案可能是单例数据控制器,它根据模型对象提供 API 的公共接口,并包含(在内部隐藏)所有映射信息和与服务器的交互。

【讨论】:

以上是关于如何在使用 RestKit 的项目中设计类?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 RestKit 测试这个对象映射

restkit,如何在没有对象映射的情况下访问对象

如何在没有响应描述映射的情况下使用 RestKit?

如何使用 restkit 忽略已发布对象上的空属性

如何使用 RestKit 删除对象?

如何保持对象一对多 RestKit