丁鹿学堂:前端设计模式学习之单例模式和享元模式

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

单例模式

通过一个需求案例可以很好的理解单例模式的使用。
需求项目中有一个全局的数据存储这个存储只能有一个否则会造成数据不同步的问题。
不管怎么调用它都只会返回同样的一个对象。

function store (){
  this.store = {

  }
  if(store.install){
    return store.install
  }
  store.install = this
}
store.install = null

注意
我们加了一个判断就实现了单例模式。当第一次new调用的时候我们会创建一个对象上面有store属性。并且给store加一个install属性这个属性指向的是this即new实例化以后的对象。
第二次再new调用的时候store.install 已经存在就是第一次new调用的实例化对象则直接返回的就是这个对象的指向。从而保证了只有一个实例对象的存在。

代码复用性的三个特点

1 对象可以重复使用不用修改
2 重复的代码少
3 模块功能单一
针对复用代码有一些常用的设计模式分享给大家。

享元模式

享元模式的应用场景是当当代码中创建了大量类似对象和代码块的时候就可以使用享元模式来减少重复。
享元模式的基本结构
假设我们有很多种不同提示文字的弹窗但是他们的样式和行为都是相同的那么我们就没有必要针对不同的文字提示新建那么多弹窗的对象。

function Pop(){

}
Pop.prototype.action = function(){
    // todo code
}
Pop.prototype.show = function(){
    // todo code
}
let popContentList = [
    {content:'content1...',style:{color:'red'}},
    {content:'content2...',style:{color:'green'}},
]

let poper = new Pop()

popContentList.forEach((item)=>{
    poper.show(item)
})

注意
1我们把公共的特征提取成一个类不同的特性
2 不同的部门我们提取成一个数组
3 我们在show方法里面去根据不同的内容执行不同的操作。
总结
享元模式就是当我们总结出我们的对象或者代码块存在多个比较相近的内容我们可以把相同的部分保留在类中不同的部分提取出来作为公用的一个数据。

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6