【发布时间】:2013-05-16 00:48:37
【问题描述】:
我的一个项目中有设计级别的问题。我正在处理一个需要使用 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
这里的问题是,即使网络相关代码在一个单独的类中,我也需要在我的所有模型类中都有我的网络管理器的具体引用。 迷茫了,该选哪一个。
最好的方法是什么?我想对此有一些详细的答案。
【问题讨论】:
标签: iphone objective-c class oop ooad