Значение стратегического шаблона состоит в том, чтобы определить серию алгоритмов, инкапсулировать их один за другим и сделать их заменяемыми.
Небольшой пример может прояснить нас с первого взгляда.
Вспоминая метод оживления в jQuery.
Кода -копия выглядит следующим образом:
$ (div) .animate ({"слева: 200px"}, 1000, 'linear'); // двигаться равномерно
$ (div) .Animate ({"слева: 200px"}, 1000, 'cubic'); // кубическое искушение власти
Эти два кода заставляют DIV перемещать 200 пикселей вправо в течение 1000 мс. Линейная (постоянная скорость) и кубические (смягчение питания Clums) - это пакеты режима стратегии.
Давайте возьмем еще один пример. В первой половине года я написал dev.qplus.com, многие страницы будут иметь мгновенную проверку. Каждый член формы будет иметь несколько различных правил проверки.
Например, в поле Имя необходимо проверить такие ситуации, как непусты, чувствительные слова и чрезмерные символы. Конечно, вы можете написать 3, если еще для решения проблемы, но можно представить масштабируемость и обслуживание кода письма. Если в форме есть больше элементов и большего количества ситуаций проверки, невозможно написать сотни людей, если еще в общей сложности.
Таким образом, лучшим подходом является инкапсулирование каждого правила проверки отдельно, используя шаблон политики. Когда вам нужно проверить, какой тип проверки вам нужно только предоставить название этой политики. Так:
Кода -копия выглядит следующим образом:
nameinput.addvalidata ({
notnull: правда,
Грязные слова: правда,
MaxLength: 30
})
Notnull, MaxLength и другие методы должны только вернуть True или False равномерно, чтобы указать, прошли ли они проверку.
Скопируйте код следующим образом: validatalist = {
notnull: function (value) {
возвращаемое значение! == »;
},
maxlength: function (value, maxlen) {
return value.length ()> maxlen;
}
}
Как видно, различные правила проверки легко изменяются и заменяются друг на друга. Если один день менеджер продукта предполагает, что ограничение для слишком длинных персонажей изменяется на 60 символов. Это займет всего 0,5 секунды, чтобы завершить работу.