假设我有一个(糟糕的伪代码):
interface IUserService
{
....
User CreateUser(bunch of parameters)
....
}
有一个实现被注入一堆不同的控制器。
具体的UserService注入了
interface IHRService
{
bool ValidateInfo(user _user)
}
这是用于附加/可选验证,并且至少有2个实现。从UserService的CreateUser函数调用ValidateInfo。我想根据控制器调用UserService将不同的IHRService注入到UserService中 - 这样我就可以从多个不同的屏幕调用相同的CreateUser函数,并且可以跳过其中一个而不是另一个验证。
温莎这样的事情是可能的,还是我错误的做法?我应该在特定控制器内部获得正确的IHRService,然后将其传递给CreateUser函数吗?
答案 0 :(得分:2)
我不知道我是否理解你,但似乎你可以注入UserService和abstract factory,它会根据运行时的一些选项创建IHRService的混合实现。温莎非常适合抽象工厂处理这些情况。它有意义吗?