2017-08-31 20 views
3

いくつかの条件の間に既知の実行パスがある場合は、次のパターンを使用します。テストケースをMap(この例ではPOJO)に定義し、条件を使用してキー検索を行います。私は通常predicateという用語を使用しました。次のコードパターンの標準名はありますか?

このパターンには標準名がありますか?使用している場合の履歴や文脈はどうですか?

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型付けされたもの)で、このパターンを見てきた確信している

+2

[ウィキペディア/戦略パターン](https://en.wikipedia.org/wiki/Strategy_pattern) – no1xsyzy

答えて

3

OOPでは、これはstrategy patternとして知られています。ルックアップテーブルが与えられている場合は、interpreter patternに似ていますが、実際には単純な言語の場合はそうです。副作用を引き起こすための戦略を使用することもcommand patternとして知られているかもしれませんが、私はあなたの例ではそうではないと主張します。

FPでは、このパターンには特定の名前はありません。どのように処理するのかです。ただし、lookupメソッドは別の関数を返すため高次関数と呼ばれることがあります。

Btwという用語は、通常、ブール値を返す関数を意味しますが、これは抽象パターンとは関係がありません。

関連する問題