Rumah  >  Artikel  >  hujung hadapan web  >  js设计模式:什么是策略模式?js策略模式的介绍

js设计模式:什么是策略模式?js策略模式的介绍

不言
不言asal
2018-08-17 16:05:061809semak imbas

本篇文章给大家带来的内容是关于js设计模式:什么是策略模式?js策略模式的介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

什么是策略模式?

定义:根据不同参数可以命中不同的策略

主要解决:在有多种算法相似的情况下,使用 if...else 所带来的复杂和难以维护。

策略模式何时使用:有许多种情况,而区分它们的只是他们直接的行为。

如何解决:通过一个hash对象,来映射不同的策略。

js策略模式优点: 1、算法可以自由切换。 2、避免使用多重条件判断。 3、扩展性、复用性良好。

js策略模式缺点: 1、策略类会增多。 2、所有策略类都需要对外暴露。

策略模式使用场景: 1.需要动态地根据行为改变运行方法。2.为了减少代码,同时为了让代码具有更好的可读性。3.需要对策略进行统一管理。

js中的策略模式

观察如下获取年终奖的 demo,根据不同的参数(level)获得不同策略方法(规则),这是策略模式在 JS 比较经典的运用之一。

 const strategy = {
  'S': function(salary) {
    return salary * 4
  },
  'A': function(salary) {
    return salary * 3
  },
  'B': function(salary) {
    return salary * 2
  }
}

const calculateBonus = function(level, salary) {
  return strategy[level](salary)
}

calculateBonus('A', 10000) // 30000

在函数是一等公民的 JS 中,js策略模式的使用常常隐藏在高阶函数中,稍微变换下上述 demo 的形式如下,可以发现我们平时已经在使用它了,恭喜我们又掌握了一种设计模式。

const S = function(salary) {
  return salary * 4
}

const A = function(salary) {
  return salary * 3
}

const B = function(salary) {
  return salary * 2
}

const calculateBonus = function(func, salary) {
  return func(salary)
}

calculateBonus(A, 10000) // 30000

相关推荐 :

 JS设计模式之代理模式详解

php设计模式之单例模式代码,php设计模式

Atas ialah kandungan terperinci js设计模式:什么是策略模式?js策略模式的介绍. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn