Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/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
Javascript 以下代码模式是否有标准名称?_Javascript_Oop_Design Patterns - Fatal编程技术网

Javascript 以下代码模式是否有标准名称?

Javascript 以下代码模式是否有标准名称?,javascript,oop,design-patterns,Javascript,Oop,Design Patterns,当我在几个条件之间有一个已知的执行路径时,我发现我使用了以下模式。我将在映射中定义测试用例(在本例中为POJO),并使用条件进行键查找。我通常使用术语谓词 该模式是否有一个标准名称?如果有,其使用的历史或上下文是什么 var predicates = { negateRegexp: function (value, operator) { return !operator.regex.test(value); }, negateOperand: function (value

当我在几个条件之间有一个已知的执行路径时,我发现我使用了以下模式。我将在映射中定义测试用例(在本例中为POJO),并使用条件进行键查找。我通常使用术语
谓词

该模式是否有一个标准名称?如果有,其使用的历史或上下文是什么

var predicates = {
  negateRegexp: function (value, operator) {
    return !operator.regex.test(value);
  },
  negateOperand: function (value, operator) {
    return value !== operator.operand;
  },
  affirmRegexp: function (value, operator) {
    return operator.regex.test(value);
  },
  affirmOperand: function (value, operator) {
    return value === operator.operand;
  }
};

var predicateKey = (operator.prefix === '!' ? 'negate' : 'affirm') +
  (operator.regexp ? 'Regexp' : 'Operand');

var testResult = predicates[predicateKey](value, operator);

if (testResult) {
  doSomethingWith(value);
}

我使用JavaScript作为示例,因为这是我通常使用的。但我确信我在其他语言(甚至像Java这样的OOP类型的语言)中也见过这种模式。

在OOP中,这就是所谓的。给定查找表,它也类似于您的示例中一种非常简单的语言。使用引起副作用的策略可能也被称为“副作用”,但我认为在你的例子中并非如此

在FP中,此模式没有特定的名称,它只是您的操作方式—尽管查找方法在返回另一个函数时可能被称为高阶函数

顺便说一句,这个术语通常只意味着返回布尔值的函数,而这适合您的情况,它与抽象模式无关