基本上,我想使用我正在编写的SDK进行api调用.
我有以下课程:
基本上要创建一辆汽车,我会做以下事情:
[Car carWithData: cardata onSuccess: successHandler onError: errorHandler]
Run Code Online (Sandbox Code Playgroud)
这基本上是一个工厂方法,它在发出API调用请求并使用响应填充新的Car类并将该实例传递给successHandler之后创建Car的实例.
所以"Car"有上面的静态方法来创建那辆车,还有非静态的方法来编辑,删除汽车(这会编辑,删除对服务器的API调用)
因此,当Car创建静态方法时,通过执行以下操作将新车传递给successHandler:
successHandler([[Car alloc] initWithDictionary: dictionary)
Run Code Online (Sandbox Code Playgroud)
成功处理程序可以继续使用该新车执行以下操作:
[car update: cardata]
[car delete]
Run Code Online (Sandbox Code Playgroud)
考虑到新车对象现在每辆车都有一个ID,它可以传递给更新和删除API调用.
我的问题:
关于CarData,请注意不同的API调用可能有不同的输入.所以create function可能需要知道model,make等,但是find函数可能需要知道要查找的项数,限制,起始id等.
首先,名称在构建SDK时非常重要.你的名字有点令人困惑.CarData听起来非常像是与...有关NSData."包含另一个类信息的类"的典型名称是"描述符".所以,我会称之为CarDescriptor.看到UIFont和UIFontDescriptor寻找灵感.
接下来,你carWithData:onSuccess:onError:的声音应该会回归Car,但它似乎是void.我推荐以下内容:
+ (void)createCarWithDescriptor:(CarDescriptor *)descriptor
completion:(void (^)(Car *car, NSError *error))completion;
Run Code Online (Sandbox Code Playgroud)
优选具有单个完成块,而不是两个.不要为完成处理程序添加前缀on.
本CarDescriptor类应该帮助你与你的搜索问题为好,但它不应该包括诸如限制.你应该把它包装成一个CarSearchRequest(或者可能只是一个CarSearch).见NSFetchRequest灵感.是传递CarDescriptor还是需要完整谓词取决于您的服务如何管理搜索.(当然,您总是可以使用将代码转换CarDescriptor为谓词的代码.)再次,看看如何UIFontDescriptor使用搜索字体来获取灵感.
| 归档时间: |
|
| 查看次数: |
149 次 |
| 最近记录: |