我一直在想我的这一个头......依赖注入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 - 将“责任”放在用户的能力对象中。必须呈现该能力才能执行授权操作。这对我来说似乎是一个“单一责任”计划。 –