要解决的问题 当解决一个问题有多种方法时,选择使用哪种方法时就少不了要用大量的if语句进行判断,如果将这些方法的实现和判断语句放在一起实现就会产生问题, 比如增加一种的新的方法时,就不得不再去写一条if语句,这不符合开闭原则,也不方便复用,因此策略模式主要解决的是算法的实现和算法的使用的过度耦合问题。
实现原理 将每个算法的实现封装起来,并可以相互替换(因为它们有共同的目的),通过统一的上下文调用,一方面解决了耦合问题,另一方面增强了代码的复用能力
实践中的应用 表单的验证 表单验证涉及到多个判断语句,一般我们会这样实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 var form = document.getElementById('myform') form.onsubmit = function() { if (form.username.value === '') { alert('请输入用户名') return false } if (form.password.value === '') { alert('请输入密码') return false } if (form.password.value.length < 8) { alert('密码不小于8位') return false } } ...