根据实现的 CanProcess
,从一组 IProcess
实现中找到正确的一个。
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();
}
}
}
有人能为这种模式提供建议吗?我看了几个,但好像都不太合适。
IProcess
实现的模式名称是什么,因为可能有许多不适合的实现。 - Jake Aitchison