这种设计模式叫什么?

时间:2015-11-05 08:53:44

标签: c# design-patterns

根据实现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();
        }
    }
}

任何人都可以就这种模式的名称提出建议,看一下,但它似乎并不合适。

2 个答案:

答案 0 :(得分:5)

它本质上不是Command Processor吗?

答案 1 :(得分:1)

看起来像穷人的chain of responsibility。相反,如果Processor修改IProcess(及其实现)以允许构建相关链,则会获得相同的行为以及在各种过程中处理相同数据的能力,以防您需要它