根据实现IProcess
的内容,让一堆CanProcess
实现找到正确的实现。
public interface IProcess
{
bool CanProcess(string name);
Task Process();
}
public class Processor
{
private readonly IEnumerable<IProcess> _processors;
public Processor(IEnumerable<IProcess> processors)
{
_processors = processors;
}
public void Process(string name)
{
Guard.RequireNonNullOrEmpty(name, "name");
// this could allow for processing multiple matches
var processor = _processors.FirstOrDefault(r => r.CanProcess(name));
if (processor!= null)
{
processor.Process();
}
}
}
任何人都可以就这种模式的名称提出建议,看一下,但它似乎并不合适。
答案 0 :(得分:5)
它本质上不是Command Processor吗?
答案 1 :(得分:1)
看起来像穷人的chain of responsibility。相反,如果Processor
修改IProcess
(及其实现)以允许构建相关链,则会获得相同的行为以及在各种过程中处理相同数据的能力,以防您需要它