我一直在想我的這一個頭......依賴注入VS單,動初始化
我工作的一個大項目,現在,應用程序正在採取的許多不同的服務優勢,因爲: 評論,喜歡,帖子,購買等..
我有一個類爲每個服務。
現在,我來到了一個地步,我想限制註冊用戶而已,對於一些行動,帖子,評論,等等..
截至目前每類使用只具有類的方法,如下所示:
@interface UpdateOrderServies : NSObject
+(void)deleteOrder: (STOrder *)order
andReturn: (void(^)(NSError *error))errorBlock;
+(void)updateOrder: (STOrder *)order
andReturn: (void(^)(NSError *error))errorBlock;
但是現在,我想首先檢查用戶是否註冊,如果不是,則不返回值。 所以我figgerd是最好的出路是改變類SINGEL基調,並要求每一個類被調用時,如果用戶registerd像這樣:
+(id) getInstance {
static UpdateOrderServies *__sharedDataModel = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
__sharedDataModel = [[UpdateOrderServies alloc]init];
});
if (![__sharedDataModel userIsRegisterd]) {
return nil;
}
return __sharedDataModel;
}
和它的作品,但是,好了,它不是一個非常好的答案,你可以看到..我想要更通用的東西。 我正在考慮使用颱風依賴注入,但沒有地方我可以檢查每個電話,如果用戶註冊... 任何想法更好的方式來處理這個問題?更多動態...
感謝
爲什麼不在用戶首次「登錄」或以其他方式標識自己時,用一個封裝了所有授權的「能力」對象等等來使用它,而不是使用簡單的用戶標識來標識用戶,以及查詢該對象以測試用戶的能力。 –
@HotLicks「爲什麼不在用戶登錄時識別用戶」。 。該步驟是身份驗證。接下來是定義調用給定服務所需的權限 - 這部分稱爲授權。我們可以將授權作爲每個服務調用的一部分,但這會破壞單一責任原則 - 因此推薦使用AOP。 –
@JasperBlues - 將「責任」放在用戶的能力對象中。必須呈現該能力才能執行授權操作。這對我來說似乎是一個「單一責任」計劃。 –