是设计模式吗?链

时间:2014-04-14 20:16:16

标签: c# design-patterns

如何调用该类\结构? 也许是设计模式?

任务:
我有一个我需要搜索项目的集合 我有3个级别的搜索 我创建了一个Matcher链并在每个级别上搜索集合,如果找不到则将集合传递到下一级。

我正在寻找什么是设计模式。

class Matcher
{
    private readonly Matcher _nextMatcher;
    private readonly Func<lambda, bool> _predicate;

    public Matcher(
        Matcher nextMatcher,
        Func<lambda, bool> predicate)
    {
        _nextMatcher = nextMatcher;
        _predicate = predicate;
    }

    public bool Match(Collection<SomeObject> someObjects,
        IEnumerable<SomeObject> sourceObjects)
    {
        if (!_predicate(someObjects, sourceObjects))
        {
            if (_nextMatcher == null)
                return false;

            return _nextMatcher.Match(someObjects, sourceObjects);
        }

        return true;
    }
}

1 个答案:

答案 0 :(得分:7)

从它的外观来看,这看起来像Chain of Responsibility设计模式的(正确的)实现。

这是另一个更以.NET为中心的例子:http://www.dofactory.com/Patterns/PatternChain.aspx