Определение: Определите серию алгоритмов, инкапсулируйте их один за другим в функции, или они могут быть равномерно инкапсулировать в объект в качестве атрибутов, а затем определить метод. Этот метод может автоматически выбирать и выполнять соответствующий алгоритм на основе параметров.
Обычно используется, когда есть много вариантов на выбор при реализации функции.
Пример 1: Рассчитайте бонус на конец года на основе зарплаты сотрудников, оценки производительности S, A, B и C.
// объект политики, который инкапсулирует все алгоритмы var стратегии = {'s': function (зарплата) {return Parlary*4; }, 'A': function (зарплата) {return Parlary*3; }, 'B': function (зарплата) {return Parlary*2; }, 'C': function (зарплата) {return Parlary*1; }} // Определите метод автоматического алгоритма выбора var cangulatebonus = function (level, parlary) {return стратегии [level] (зарплата);} // Использование CalculateBonus ('s', 9000); // 36000calculatebonus ('b', 5000); // 10000Пример 2: проверка формы
// объект политики, который определяет алгоритм проверки var стратегии = function () {isempty: function (value, errormsg) {if (value = '') {return errormsg; }} Outlrangle: function (value, min, max, errorrmsg) {if (value.length> max || value.length <min) {return errorrrmsg; }} iSsame: function (OldValue, newValue, errorrrmsg) {if (newValue! == OldValue) {return errorrrmsg; }} ismobile: function (value, errorrmsg) {if (!/(^1 [3 | 5 | 8] [0-9] {9} $)/. test (value)) {return errormsg; }} ......}Вы также не можете определить следующий класс валидатора и напрямую вызовут метод атрибута объекта стратегий, когда потерю события фокусировки запускается для проверки текущего входного элемента.
// определить validatorvar validator = function () {this.cache = [];} vardator.prototype.add = function (elem, rals) {var self = this; for (var i = 0, ruge; rug = rulte [i ++]) {(function (rule) {var stragement = rule.strategy.split (':'); var errormsg = ruge.errormsg; self.cache.push (function () {var stragement = стратегия.shift (); стратегии [стратегия] .apply (elem, strategy); if (errormsg) {return errorrrmsg; }}}использовать:
var valyator = new Validator (); Validator.Add (elem.username, [{стратегия: 'isempty', errormsg: «Имя пользователя не может быть пустымПриложение: объект конфигурации параметров
Если есть функция foo (a, b, c, d, e, f ...), она имеет много параметров, такие функции трудно использовать, а параметры трудно запомнить! Лучшим способом является использование объекта для содержания этих параметров, а затем передать объект функции, а затем обработать свойства объекта.
var prop = {a: 55, b: 'ss', c: function () {...} d: {x: 1, y: 2} ...} foo (prop);Таким образом, нет необходимости запоминать порядок параметров при использовании функций. Просто помните несколько имен атрибутов объекта параметра, которые нелегко сделать ошибки
Список литературы: «Паттерн JavaScript» «Образец проектирования и разработки JavaScript»
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.