Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是设计模式吗?链条_C#_Design Patterns - Fatal编程技术网

C# 是设计模式吗?链条

C# 是设计模式吗?链条,c#,design-patterns,C#,Design Patterns,如何称呼该类\结构? 也许是设计模式 任务: 我有一个需要搜索项目的集合。 我有3个搜索级别。 我创建一个匹配器链,在每个级别的集合中搜索,如果没有找到,则将集合传递到下一个级别 我在寻找什么是设计模式 class Matcher { private readonly Matcher _nextMatcher; private readonly Func<lambda, bool> _predicate; public Matcher( Ma

如何称呼该类\结构? 也许是设计模式

任务:
我有一个需要搜索项目的集合。
我有3个搜索级别。
我创建一个匹配器链,在每个级别的集合中搜索,如果没有找到,则将集合传递到下一个级别

我在寻找什么是设计模式

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;
    }
}
类匹配器
{
专用只读匹配器_nextMatcher;
私有只读Func_谓词;
公共匹配器(
Matcher nextMatcher,
Func谓词)
{
_下一个匹配器=下一个匹配器;
_谓词=谓词;
}
公共布尔匹配(集合对象,
IEnumerable源对象)
{
if(!\u谓词(someObjects,sourceObjects))
{
如果(_nextMatcher==null)
返回false;
return _nextMatcher.Match(someObjects,sourceObjects);
}
返回true;
}
}

从外观上看,这看起来像是设计模式的(正确)实现

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;
    }
}
下面是另一个以.NET为中心的示例: