私のプロジェクトの 1 つで設計レベルの質問があります。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];
設計レベルの質問が出るまで、すべてがうまく機能しているように見えます.なぜその間にマネージャーがいたのですか. すべての作業は Customer オブジェクトで行われたため、以下のように、すべての Customer 関連の操作を Customer クラスに含める必要があります。
@interface Customer
+ (BOOL)addCustomer:(Customer *)customer;
+ (BOOL)deleteCustomer:(Customer *)customer;
+ (BOOL)updateCustomer:(Customer *)customer;
+ (NSArray *)customers;
@end
ここでの問題は、ネットワーク関連のコードが別のクラスにあるにもかかわらず、すべてのモデル クラスでネットワーク マネージャーの具体的な参照が必要になることです。どちらを選ぶべきか混乱。
最良の方法はどれでしたか?. これについては、詳細な回答をいただきたいと思います。