一、单例模式
定义:保证一个类只有一个实例,并且提供一个访问它的全局访问点。
实现:用一个变量标识当前是否已经为某个类创建过对象,如果是,则在下一次获取这个类的实例时,直接返回之前创建的对象。
可以被实例化,且实例化一次,再次实例化生成的也是第一个实例。
Vuex的设计思想:vuex全局维护一个对象,使用到了单例设计模式。在这个全局对象中,所有属性都是响应式的,任意属性进行了改变,都会造成使用该属性的组件进行更新。并且只能通过commit的方式改变状态,实现了单向数据流模式。vuex还使用了发布订阅模式。
const store = new Vuex.Stroe({
state: {
count:0
}
})
new Vue({
el: '#app',
store
})
this.$store.state访问数据
const state = {} // 数据
const getter = {} // 计算属性,类似于组件中的computed
const actions = {} // 用户派发的行为,相当于methods
const mutations = {} // 必须通过这一步来修改数据
actions动作提交一个事件,mutations拿到这个事件并执行
二、观察者模式
定义:对象间的一种一对多的依赖关系
需求:当一个对象的状态发生改变时,所有依赖于他的对象都将得到通知
实现:
1、首先指定好谁是被观察者
2、给被观察者指定一个列表,用于存放回调函数以便通知观察者
3、当被观察者状态改变时,发布者会遍历这个缓存列表,依次触发里面存放的观察者回调函数,观察者会做出相应的更改。
三、工厂模式
定义:将其成员对象的实例化推迟到子类来实现