戦略パターンの意味は、一連のアルゴリズムを定義し、それらを1つずつカプセル化し、それらを交換可能にすることです。
小さな例では、一目で私たちを明らかにすることができます。
jQueryのアニメートメソッドを思い出します。
コードコピーは次のとおりです。
$(div).animate({"left:200px"}、1000、 'linear'); //均一に移動します
$(div).animate({"left:200px"}、1000、 'cubic'); //キュービックパワーの誘惑
これらの2つのコードにより、Divは1000ms以内に200ピクセルを右に移動します。線形(一定速度)と立方体(Clums Power Easing)は、戦略モードのパッケージです。
別の例を取りましょう。年の前半に、私はdev.qplus.comを書きました、多くのページには即座の検証フォームがあります。フォームの各メンバーには、いくつかの異なる検証ルールがあります。
たとえば、名前ボックスでは、空ではなく敏感な単語や過度の文字などの状況を確認する必要があります。もちろん、問題を解決するために他の場合は3を記述できますが、この方法での執筆コードのスケーラビリティとメンテナンスは想像できます。形式にもっと多くの要素があり、検証状況が増える場合、合計で何百ものものを書くことは不可能ではありません。
したがって、より良いアプローチは、ポリシーパターンを使用して各検証ルールを個別にカプセル化することです。どのタイプの検証を確認する必要がある場合、このポリシーの名前のみを提供する必要があります。このような:
コードコピーは次のとおりです。
nameinput.addvalidata({
notnull:本当、
DirtyWords:本当、
MaxLength:30
})
notnull、maxlength、およびその他の方法は、検証に合格したかどうかを示すために、真またはfalseを均一に返すだけで済みます。
次のようにコードをコピーします:valimatalist = {
notnull:function(value){
return値!==”;
}、
maxlength:function(value、maxlen){
return value.length()> maxlen;
}
}
ご覧のように、さまざまな検証ルールを簡単に変更し、互いに置き換えます。ある日、プロダクトマネージャーが長すぎる文字の限界が60文字に変更されることを提案します。作業を完了するには0.5秒しかかかりません。