我的一个项目中有设计级别的问题。我正在开发一个需要使用 REST 获取一些对象的项目。例如,获取客户并将其显示在列表中。
以下可以对客户进行的操作,
- 添加客户
- 编辑客户详细信息
- 删除客户
所以我想包括一个名为'CustomerManager'的类,包括以下方法,
@interface CustomerManager
- (CustomerManager *)sharedManager;
- (BOOL)addCustomer:(Customer *)customer;
- (BOOL)deleteCustomer:(Customer *)customer;
- (BOOL)updateCustomer:(Customer *)customer;
@end
@implementation CustomerManager
- (BOOL)addCustomer:(Customer *)customer;
{
NetworkManager * manager = [NetworkManager manager] addCustomer:customer ];
}
@end
在我需要执行客户相关操作的 ViewController 中,我曾经这样做过,
Customer * manager = [Customer sharedManager];
[manager addCustomer:customer];
//fetch customer
[manager customers];
//While deleting
[manager deleteCustomer:customer];
一切看起来和工作正常,直到我得到一个设计级别的问题,为什么中间有一个经理。所有工作都在客户对象上完成,因此您需要在客户类中拥有所有与客户相关的操作,如下所示。
@interface Customer
+ (BOOL)addCustomer:(Customer *)customer;
+ (BOOL)deleteCustomer:(Customer *)customer;
+ (BOOL)updateCustomer:(Customer *)customer;
+ (NSArray *)customers;
@end
这里的问题是,即使网络相关代码在一个单独的类中,我也需要在我的所有模型类中都有我的网络管理器的具体引用。迷茫,该选哪一个。
哪个是最好的方法?我想对此有一些详细的答案。