目录
- 表单校验
- 背景
- 常规写法:
- 策略模式介绍
- 真实世界类比
- 更广义的“算法”
- 策略模式的组成
- 利用策略模式改写
- 策略模式优缺点
- 优点:
- 缺点:
- 策略模式适合应用场景
- 总结
表单校验
背景
假设我们正在编写一个注册页面,在点击注册按钮之时,有如下几条校验逻辑:
- 用户名不能为空
- 密码长度不能少于6位
- 手机号码必须符合格式
常规写法:
const form = document.getElementById('registerForm'); form.onsubmit = function () { if (form.userName.value === '') { alert('用户名不能为空'); return false; } if (form.password.value.length < 6) { alert('密码长度不能少于6位'); return false; } if (!/^1[3|5|8][0-9]{9}$/.test(form.phoneNumber.value)) { alert('手机号码格式不正确'); return false; } ... }
这是一种很常见的代码编写方式,但它有许多缺点:
- onsubmit 函数比较庞大,包含了很多 if-else 语句,这些语句需要覆盖所有的校验规则。
- onsubmit 函数缺乏弹性,如果增加了一种新的校验规则,或者想把密码的长度从6改成8,我们都必须深入 obsubmit 函数的内部实现,这是违反开放-封闭原则的。
- 算法的复用性差,如果在项目中增加了另外一个表单,这个表单也需要进行一些类似的校验,我们很可能将这些校验逻辑复制得漫天遍野。
如何避免上述缺陷,更优雅地实现表单校验呢?
策略模式介绍
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论(0)