设计模式
一种编程思想,这类思想会解决一种问题
例如:
- 单例模式:简单来说是一个对象,平时使用时用闭包包起来
工厂模式:在jQuery中使用$(’’)或者jQuery()包起来,当做普通函数执行,最后创造一个他的实例,使用init中转一下 - 构造函数设计模式:new一个东西执行就是构造函数模式,解决了:可以创造一个类的多个实例,每一个实例之间既是独立的,每一个都有自己的单独属性,而且还能找到所属的公共属性。例如swiper插件,使用它就是要new,因为这个项目中可能有多个,每次使用swiper创造多个轮播图,每一个轮播图都会new一个新的swiper,每一个swiper都会有自己私有的特征,互相之间不冲突,如何动起来这些属性就是公有的
- 发布订阅设计模式 ---->前身是观察者模式:可以把未来要处理的事情,有效的进行管理和依次进行[发布计划表——>开始在到达条件执行之前,先把后期要做的事情订阅到计划表之中,到达条件和,通知计划表中的方法执行]
例如不使用发布订阅
我们有五个方法,要让他1秒钟后依次执行,怎么做呢?那么毫无疑问使用定时器呗。
这样写也就是最常见的方法,这样也没有任何问题!,
比如特别多的代码呢?假设你期间写了大量的代码,
你突然又写了一个方法也想让他两秒钟后执行,
那么是不是又需要找到那个定时器给他加进去?再假设你又不想要了又要找回去重新找
那么**jQuery中提供了发布订阅**
设计模式是什么?是一种思想,可以简化代码,他只是一个优化项不是一个必须项。
const dactory1=()=>{console.log(1)};
const dactory2=function(){
console.log(2);
}
const dactory3=()=>{console.log(3)};
const dactory4=function(){
console.log(4);
}
const dactory5=()=>{console.log(5)};
const dactory6=function(){
console.log(6);
}
setTimeout(function(){
dactory1();
dactory2();
dactory3();
dactory4();
dactory5();
dactory6();
},2000)
- 1.创建计划表
let $plan=$.Callbacks();—>创建一个计划表 可以创建多个计划表
那么我们输出$plan看看有什么方法
add——>向计划表中添加计划
empty——>清除所有计划
fire——>通知计划表中方法按照顺序执行
has—>验证计划表中是否存在该方法
remove——>移除计划表中的某个方法
最常用的 add fire remove
- 2.设置何时执行计划表中的方法
setTimeout(function(){
$plan.fire(10,20)
},2000)
let $plan=$.Callbacks();
$plan.add(dactory2);
$plan.add(dactory3);
$plan.add(dactory4);
$plan.add(dactory5);
$plan.has(dactory6);
此时是异步操作,哪怕时间到了我也不执行,将他放入WEBAPI中等待,就算一毫秒只要我同步操作未完全那么那就需要等着,而我下面的同步代码一次往计划中表加入方法即可