嗨,我正在使用Simple Injector DI 库,并且一直在关注一些关于围绕命令模式设计的架构模型的非常有趣的材料:
容器将管理 . 的生命周期UnitOfWork
,我正在使用命令对数据库执行特定功能。
我的问题是,如果我有一个命令,例如 an AddNewCustomerCommand
,它又对另一个服务执行另一个调用(即发送一条短信),从设计的角度来看这是可以接受的还是应该在更高级别完成,如果是这样,如何最好这样做?
示例代码如下:
public class AddNewBusinessUnitHandler
: ICommandHandler<AddBusinessUnitCommand>
{
private IUnitOfWork uow;
private ICommandHandler<OtherServiceCommand> otherHandler;
AddNewBusinessUnitHandler(IUnitOfWork uow,
ICommandHandler<OtherServiceCommand> otherHandler)
{
this.uow = uow;
this.otherHandler = otherHandler;
}
public void Handle(AddBusinessUnitCommand command)
{
var businessUnit = new BusinessUnit()
{
Name = command.BusinessUnitName,
Address = command.BusinessUnitAddress
};
var otherCommand = new OtherServiceCommand()
{
welcomePostTo = command.BusinessUnitName
};
uow.BusinessUnitRepository.Add(businessUnit);
this.otherHandler.Handle(otherCommand);
}
}