如何在使用 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:withBlock
,logoutUser:withBlock:
)。当我想通过应用程序注册用户时,我只需要使用凭据创建ABCUser
对象,并且我必须将其发送到服务器,然后我从服务器接收完整的对象。是好的设计吗?
也许我应该使用ABCUser
类的一些Proxy
对象来登录?此类将仅具有类似凭据的属性。是好意吗?
也许好的解决方案是为注册和登录用户创建一些服务类?可能是ABCRegisterService
和ABCLoginService
?
提前感谢您的 cmets。
【问题讨论】:
【参考方案1】:这是相当基于意见的,取决于您的习惯和习惯。您当前的解决方案是可以接受且极简的。该类别的用途相对清楚,并且将来应该可以维护。
您的其他建议添加了更多课程,但效果并不明显。他们将从模型中删除可能被归类为不合适的代码,但它们也会使代码库更加冗长,更难理解和维护。除非您有整体服务或基于代理的方法,否则这不太可能有帮助。
您当前的解决方案可能缺少的主要内容是整体 API 结构和活动/连接管理。通过将 API 方法放在每个模型对象的类别中,更难看到 API 形状,并且随着 API 的增长和允许更复杂(有用)的功能,您在模型对象之间添加了无意义的依赖关系。管理并发连接的数量也更加困难。对此的适当解决方案可能是单例数据控制器,它根据模型对象提供 API 的公共接口,并包含(在内部隐藏)所有映射信息和与服务器的交互。
【讨论】:
以上是关于如何在使用 RestKit 的项目中设计类?的主要内容,如果未能解决你的问题,请参考以下文章